gpt4 book ai didi

javascript 回调无法以异步方式工作

转载 作者:行者123 更新时间:2023-12-03 03:57:48 26 4
gpt4 key购买 nike

当我试图理解 js 回调时,我遇到了这个问题。 在这里,我尝试在 2500 ms 之后提醒 aa,即当 aa 的值已解析时,但我得到的结果为 1。为什么?我认为 aa 在这里未定义,但 b() 在调用堆栈中。它应该解析 aa 的实际值。如果我错了,请纠正我。

function a(b){
var aa = b();

setTimeout(function(){
alert(aa)
},3000)
}

function b() {
return setTimeout(function() {
return 'alert this value !';
},2500)
}

a(b);

最佳答案

您不能从这样的异步函数返回值。获得类似行为的一种方法是使用 promises :

async function a(b){
var aa = await b();

setTimeout(function(){
alert(aa)
},3000)

)

function b() {
return new Promise( (resolve, reject) => {
setTimeout(function() {
resolve( 'alert this value !' );
},2500)

}
}

a(b);

当您没有可用的 async/await 时,您还可以使用 Promise 的 then() 回调a():

function a(b){
b().then( (value) => {
setTimeout(function(){
alert(value)
},3000)
});
)

关于javascript 回调无法以异步方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858705/

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