gpt4 book ai didi

javascript - 异步/等待比回调慢

转载 作者:行者123 更新时间:2023-11-29 15:08:44 25 4
gpt4 key购买 nike

我正在尝试将回调转换为异步/等待,但发现异步/等待比现有回调慢得多。任何人都可以看到我的异步/等待有什么问题吗?

for (var i = 0; i < balance; i++) {      
tokenOfOwnerByIndex().call(i).then((id) => {
tokenURI().call(id).then((uri) => {
console.log(uri);
});
});
}
for (var i = 0; i < balance; i++) {
var id = await this.getTokenOfOwnerByIndex(i);
var uri = await this.getTokenURI(id);
console.log(uri);
}

最佳答案

在第一个版本中,tokenOfOwnerByIndex 被称为返回 promise 。您通过 then 附加回调,然后循环继续。 promise 最终会解决,但您的 for 循环在此之前很久就完成了。

当您使用 await 时,您将阻止以下代码,直到 promise 解决。这意味着每次调用 tokenOfOwnerByIndex 都必须在 for 循环继续之前解决。

查看我的代码以获取示例。

function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}

console.time('promise');
let c = 10;
for (let i = 0; i < 10; i++) {
sleep(100)
.then(() => {
c--;
if (c === 0) {
console.timeEnd('promise');
}
});
}


console.time('await');
(async () => {
let c = 10;
for (let i = 0; i < 10; i++) {
await sleep(100);
c--;
if (c === 0) {
console.timeEnd('await');
}
}
})();

关于javascript - 异步/等待比回调慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56894620/

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