Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Async Await_For Await - Fatal编程技术网

Javascript 为等待而脱衣服。。属于

Javascript 为等待而脱衣服。。属于,javascript,async-await,for-await,Javascript,Async Await,For Await,我一直在试图弄清楚我到底在等什么。。当然有。然而,即使阅读说明书,我也无法找到它的确切功能 以下是我的猜测: const it=iterable[Synbol.asyncierator]; 虽然是真的{ const{done,value}=wait it.next; 如果完成,返回; //用户代码。。。 } 但是,如果迭代器实现了return和throw,我不确定它们在哪里/如何发挥作用 一种猜测是: const it=iterable[Synbol.asyncierator]; 试一试{ 虽然

我一直在试图弄清楚我到底在等什么。。当然有。然而,即使阅读说明书,我也无法找到它的确切功能

以下是我的猜测:

const it=iterable[Synbol.asyncierator]; 虽然是真的{ const{done,value}=wait it.next; 如果完成,返回; //用户代码。。。 } 但是,如果迭代器实现了return和throw,我不确定它们在哪里/如何发挥作用

一种猜测是:

const it=iterable[Synbol.asyncierator]; 试一试{ 虽然是真的{ const{done,value}=wait it.next; 如果完成,返回; 试试{ //用户代码。。。 }犯错误{ const{done}=等待它; 如果完成,返回; } } }最后{ 这是回报; } 迭代协议中根本不使用迭代器的throw方法

如果用户代码计算结果突然完成,从而提前结束迭代(即在等待之前),则调用迭代器的return方法。next.done为true:

当对迭代变量或循环体的赋值引发异常时 当循环体计算return、break或continue-outer\u-label语句时 的步骤很难准确地表示为JS代码,因此我将避免尝试去糖化

for await…of步骤与for…of循环完全相同,除了通过Symbol.asyncierator而不是Symbol.iterator访问迭代器,并等待.next和.return调用的返回值。

作为奖励。投掷的目的是什么?它被发电机和产量*使用。您可以通过为屈服表达式的结果注入任意补全来指导生成器函数:它们可以生成一个值,它们可以表现为命中返回,也可以抛出异常。