如何异步等待内部工作?

时间:2018-06-17 03:46:52

标签: javascript node.js asynchronous v8

  

我的问题是如何在node.js或v8中执行等待函数的结果   环境。

我们知道,node.js是单线程非阻塞I / O环境。

  

什么是内部代码及其工作原理?

示例异步功能:

async function asyncCall() {      
 // `getCreditorId` and `getCreditorAmount` return promise
  var creditorId= await getCreditorId(); 
  var creditAmount=await getCreditorAmount(creditorId);

}

如果执行此函数,则首先等待creditorId,然后使用creditorId调用getCreditorAmount,并再次在此异步函数中等待债权人Amount。

而不是异步功能,其他执行不等待,这很好。

  1. 第二个问题
  2. 如果对此示例使用承诺

    getCreditorId().then((creditorId)=>{
       getCreditorAmount(creditorId).then((result)=>{
          // here you got the result
      })
    });
    

    我的假设 如果异步等待在内部使用promise,那么async必须知道哪个varibale在getCreditorAmount函数中用作参数。

      

    怎么知道?

    我的问题可能毫无价值吗? 如果它有答案,那么我想知道ans。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

async-await使用生成器来解决并等待Promise。

await在async-await中是异步的,当编译器到达await时,它将停止执行并将所有内容推送到事件队列中,并在async函数之后继续执行同步代码。例子

function first() {
    return new Promise( resolve => {
        console.log(2);
        resolve(3);
        console.log(4);
    });
}

async function f(){
    console.log(1);
    let r = await first();
    console.log(r);
}

console.log('a');
f();
console.log('b');

由于等待是异步的,因此等待之前的所有其他事情都照常发生

a
1
2
4
b
// asynchronous happens
3

答案 1 :(得分:1)

async / await只是一个生成器。 如果您想了解更多信息,请查看这些文档。

Generators

Async Function