Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套异步/等待函数_Javascript_Asynchronous_Async Await - Fatal编程技术网

Javascript 嵌套异步/等待函数

Javascript 嵌套异步/等待函数,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我正在试图理解如何以嵌套方式使用async/await。 在本例中,我调用函数a(),在函数中,我要调用b(),并确保b()在a()之前解析。 下面是代码,虽然调用了b(),但没有得到解析 函数a(){ b(); 返回新承诺((解决、拒绝)=>{ 设置超时(()=>{ 解决(“解决a”); }, 2000); }); } 函数b(){ log('calling b'); 返回新承诺((解决、拒绝)=>{ 设置超时(()=>{ 决议(“决议b”); }, 2000); }); } 异步函数asy

我正在试图理解如何以嵌套方式使用async/await。 在本例中,我调用函数a(),在函数中,我要调用b(),并确保b()在a()之前解析。 下面是代码,虽然调用了b(),但没有得到解析

函数a(){
b();
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
解决(“解决a”);
}, 2000);
});
}
函数b(){
log('calling b');
返回新承诺((解决、拒绝)=>{
设置超时(()=>{
决议(“决议b”);
}, 2000);
});
}
异步函数asyncCall(){
console.log('calling');
常量结果=等待a();
控制台日志(结果);
}
异步调用()
如何打印“已解决的b”

当前的代码完全忽略了
b
的解析值。第一个例子完全忽略了承诺。第二个示例等待承诺解析,但对解析的值不做任何操作(甚至不在变量中捕获它)

您必须
console.log()
像您记录的所有其他操作一样进行操作

您可以
logthisvalue=wait b()
。您可以
b()。然后(logthisvalue=>这里)
。您可以修改
b()
,使其记录自己的值

异步函数(在本例中为函数“a”)既是被调用者(由asyncCall()调用)又是调用者(调用b())的情况是否常见

async
await
关键字是管理承诺的工具

顶级
await
支持较差,因此通常只能在
async
函数中使用
await

您必须调用
async
函数才能执行任何操作

async
函数必须获得从某处等待的承诺,通常是通过调用另一个函数

如何打印“已解决的b”

当前的代码完全忽略了
b
的解析值。第一个例子完全忽略了承诺。第二个示例等待承诺解析,但对解析的值不做任何操作(甚至不在变量中捕获它)

您必须
console.log()
像您记录的所有其他操作一样进行操作

您可以
logthisvalue=wait b()
。您可以
b()。然后(logthisvalue=>这里)
。您可以修改
b()
,使其记录自己的值

异步函数(在本例中为函数“a”)既是被调用者(由asyncCall()调用)又是调用者(调用b())的情况是否常见

async
await
关键字是管理承诺的工具

顶级
await
支持较差,因此通常只能在
async
函数中使用
await

您必须调用
async
函数才能执行任何操作

async
函数必须从某个地方获得等待的承诺,通常是通过调用另一个函数。

没有打印“已解析的b”,因为没有任何内容打印
b()的结果。
没有打印“已解析的b”,因为没有任何内容打印
b()的结果。