Javascript 如何在代码的其余部分之前获得此异步结果?
我读了很多关于async和Promise的书,我就是想不通 简单来说:Javascript 如何在代码的其余部分之前获得此异步结果?,javascript,async-await,Javascript,Async Await,我读了很多关于async和Promise的书,我就是想不通 简单来说: let test = 50; check(array).then(x => console.log("this goes first",x)); console.log(test); 我的异步函数在另一个类中: async check(array) { let b; for (let word of array) b = (await check(word)) ?
let test = 50;
check(array).then(x => console.log("this goes first",x));
console.log(test);
我的异步函数在另一个类中:
async check(array) {
let b;
for (let word of array)
b = (await check(word)) ? 0 : 1; //if true =0 , false =1
if (oneElemInArrayisFalse === 1) {
break;
}
}
return b;
}
我的输出是:
50
"this goes first:"(1 or 0)
您可以通过以下方式链接,而不是通过其他方式…:
let test = 50;
check(array)
.then(x => console.log("this goes first",x))
.then(() => console.log(test));
当您将逻辑放在“then”中时,您的代码将继续,并且每当承诺返回时,then将发生(就像回调函数)。。您可以像这样等待(您需要调用异步函数): 当然,日志将按顺序出现,但可以向您展示这一点的是,x将被返回,而不是
未定义的
。。
如果不能使调用函数异步,可以将检查后应发生的所有事情都放在然后中
let test = 50;
check(array).then(x => {
console.log("this goes first",x);
console.log(test);
);
因为您希望代码的其余部分同步运行,所以不需要让它们发生在不同的地方。。
请注意,之后的任何操作都不会同步运行,并且可能在check函数返回之前发生。问题是什么?我想知道hot如何打印异步函数的结果,然后继续代码的其余部分。在这种情况下,console.log(test)
您需要移动console.log(test)
在然后
回调中或在等待
之后。这是我在这里尝试做的:check(array)
如果第一次回调没有返回承诺,则不应连锁then
调用。第二个回调也不会收到x
参数。您忘了提到await
只能在async
函数中使用,因为await必须在async方法中:(原以为可以将调用方法更改为异步,我编辑了我的答案..但请注意关于then..的解释..这是我的主要目的。。
let test = 50;
check(array).then(x => {
console.log("this goes first",x);
console.log(test);
);