我的问题是如何在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。
而不是异步功能,其他执行不等待,这很好。
如果对此示例使用承诺
getCreditorId().then((creditorId)=>{
getCreditorAmount(creditorId).then((result)=>{
// here you got the result
})
});
我的假设 如果异步等待在内部使用promise,那么async必须知道哪个varibale在getCreditorAmount函数中用作参数。
怎么知道?
我的问题可能毫无价值吗? 如果它有答案,那么我想知道ans。
感谢您的帮助。
答案 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)