打字稿中的async-await-不等待已完成的功能完全执行

时间:2019-03-12 23:44:45

标签: typescript ecmascript-6 async-await

我在打字稿文件中有以下情形:

async function a() : Promise<void> {
  try {
    var result = await b(); 
    console.log('result=' + result);
  } catch(err){

  } finally {
    console.log('fin');
  }
}

async function b() : Promise<number> {
    let x: number = 1;
    console.log('start');
    // A long time taking http call - tried making the http request, both with or without await, but no change in result.
    // x got modified to 2 as a result of above call.
    console.log('x=' + x);
    return x;
}
a();

所有这些都发生在单个文件中,其骨架几乎在上面,我在这里的担心是对于上面的代码,我希望输出为start x=2 result=2 fin。 但是我得到的输出是start result=undefined fin x=2

从输出中看,函数b似乎开始执行,但是由于要花时间,因此即使我已经等待,下一行也要执行。同样,打印中的x = 2确认http调用成功。因此,我无法根据b的输出将任何逻辑放入a中。

我的tsconfig具有以下内容:

"target": "es2015",
"module": "commonjs",
"lib": ["es5","es2015"] 

有人可以帮我吗?谢谢

0 个答案:

没有答案