(я новичок в 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")
}
})
}
- Когда использовать что?
- Есть ли другие различия, связанные спроизводительность или любые другие черты среди этих трех?