gpt4 book ai didi

Javascript - 回调与从另一个函数内调用函数

转载 作者:行者123 更新时间:2023-12-02 21:23:38 25 4
gpt4 key购买 nike

我有以下代码:

function download(url, callback) {
setTimeout(() => {
// script to download the picture here
console.log(`Downloading ${url} ...`);

callback();

}, 3* 1000);
}


download(url);

为什么需要回调函数。我不能创建另一个函数并从下载函数中调用该函数吗?我不认为人们说异步编程需要回调有什么意义。

最佳答案

当值取决于 promise 的响应时,回调是必要的。通常,当我们从其他来源(例如外部 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
});

Can't I just create another function and call that function from within the download function?

将其他函数作为回调传递会更有意义,如下所示:

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);

关于Javascript - 回调与从另一个函数内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60794642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com