gpt4 book ai didi

javascript - async/await 如何与 async 函数中的回调一起工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:44 26 4
gpt4 key购买 nike

async setMyPhotos() {
const newPhotos = await Promise.all(newPhotoPromises);

someOtherPromise(); // will wait for newPhotoPromises

syncAvatar(newPhotos[0], function(res, err) { // does this wait for newPhotoPromises too?
if (!err) console.log("avatar sync'd");
});

return newPhotos; // return just needs to wait for newPhotoPromises
}

我注意到 syncAvatar 似乎有效,但我不确定我是否只是走运。如果是这样,我如何确保 syncAvatar 仅在 newPhotoPromises 完成后运行?

澄清一下,syncAvatar 需要在 newPhotoPromises 完成后发生,但是 setMyPhotos 只需要返回 newPhotoPromises< 的结果,而 syncAvatar 可以在后台发生。

最佳答案

你在上面说“async 是一个Promise 东西”。你说得对。这是。它基本上是 promises 的语法糖,使它们在某些情况下更容易遵循。

在这种情况下,该函数实际上可以重写为如下所示:

setMyPhotos() {
return Promise.all(newPhotoPromises)
.then(newPhotos => {
someOtherPromise();

syncAvatar(newPhotos[0], function(res, err) {
if (!err) console.log("avatar sync'd");
});

return newPhotos;
});
}

await 基本上告诉 Javascript 引擎在执行函数的其余部分之前等待 Promise 被解析。 一切 都在等待 promise 被解决:函数本质上暂停了。

async 函数反过来总是返回一个Promise,就像上面的等效代码一样。

关于javascript - async/await 如何与 async 函数中的回调一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41899862/

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