В чем основное различие между закрытием, обратным вызовом, обещанием в JavaScript и чем все они уникальны? - PullRequest
0 голосов
/ 07 декабря 2018

(я новичок в JavaScript и сомневаюсь в понимании javascript)

Что делают мои функции?

Использовал Axios для получения запросов и ответов от API во всех трех методах и журналестатус

Это реализовано в трех вариантах (обратный вызов, закрытие, обещание)

Мое понимание:

Разборчивость иудобочитаемость лучше в следующем порядке:

Обещание> Замыкания> Обратный вызов

//Callback

onMakeApiCallback() {
    this.getData((response) => {
        console.log("data callback success", response)
    }, (error) => {
        console.log("error is", error)
    })
}

getData(onApiSuccess, onApiFail) {
    axios.get("https://rallycoding.herokuapp.com/api/music_albums")
        .then(function(response,error) {
            if(response.data[3].title === "Red") {
                onApiSuccess(response)
            } else {
                onApiFail(error)
            }
        })
}

Выше сделано с помощью обратного вызова, когда я отправил функцию в качестве параметра другой функции.Я нашел этот метод сложным по сравнению с другими двумя.

//Closure

onMakeApiClosure() {
    axios.get("https://rallycoding.herokuapp.com/api/music_albums")
        .then(function(response,error) {
            function innerfunction(response,error) {
                if(response) {
                    console.log("success")
                } else {
                    console.log("fail",error)
                }
            }
            return innerfunction(response,error)
        })
}

Выше сделано с помощью Closure.Function внутри функции

// Promise

onMakeApiPromise() {
    axios.get('https://rallycoding.herokuapp.com/api/music_albums')                 
        .then(function(response,error) {
            console.log("1", response.data[3].title)
            if(response.data[3].title === "Red") {
                console.log("data is success", response)
            } else if(error) {
                console.log("error is ", error)
            } else {
                console.log("not equal")
            }
        })   
}
  1. Когда использовать что?
  2. Есть ли другие различия, связанные спроизводительность или любые другие черты среди этих трех?

1 Ответ

0 голосов
/ 09 декабря 2018

Ссылки для понимания

...