Javascript 如何在代码的其余部分之前获得此异步结果?

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

我读了很多关于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)) ? 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);
);