[英]Calling a function within a callback function of a callback function in Javascript
[英]Javascript - Callback vs Calling function from within another function
我有以下代碼:
function download(url, callback) {
setTimeout(() => {
// script to download the picture here
console.log(`Downloading ${url} ...`);
callback();
}, 3* 1000);
}
download(url);
為什么我需要一個回調函數。 我不能創建另一個函數並從下載函數中調用該函數嗎? 我不明白人們說異步編程需要回調的意義。
當值取決於承諾的響應時,回調是必要的。 通常,當我們從其他來源(例如外部 API)請求數據時,我們並不總是知道何時會返回我們的數據。
我認為你的例子所暗示的將是這樣的:
function download(url, callback) {
console.log(`Downloading ${url} ...`);
fetch(url)
.then((response) => {
callback(null, response)
})
.catch((error) => {
callback(err, null)
});
}
download("http://example.com/movies.json", function(err, response){
// Do something with the response data
});
我不能創建另一個函數並從下載函數中調用該函數嗎?
將您的其他函數作為回調傳遞會更有意義,如下所示:
function handleMovieData(err, response) {
// Do something with the response data
}
download("http://example.com/movies.json", handleMovieData);
尼克帕森斯的評論很好地解釋了這一點
編輯:除了傳入回調函數,您還可以使用 async/await (未經測試)
async function download(url) {
console.log(`Downloading ${url} ...`);
return new Promise(function(resolve, reject) {
fetch(url)
.then((response) => {
resolve(response)
})
.catch((error) => {
reject(err)
});
})
}
const movieData = await download("http://example.com/movies.json");
handleMovieData(movieData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.