异步发电机

这个异步发电机对象返回异步生成器功能它符合异步迭代协议和异步迭代器协议.

异步生成器方法总是会产生承诺物体。

异步发电机是隐藏的异步迭代器类。

试试看

施工单位

没有对应于异步发电机构造函数。的实例异步发电机必须从返回异步生成器功能:

js公司
异步函数*createAsyncGenerator(){屈服承诺。解决(1);收益等待承诺。决心(2);产量3;}const asyncGen=创建同步生成器();asyncGen.next().then((res)=>console.log(res.value));//1asyncGen.next().then((res)=>console.log(res.value));//2asyncGen.next().then((res)=>console.log(res.value));//

只有一个隐藏对象,它是由异步生成器函数创建的所有对象共享的原型对象。此对象的样式通常为异步发电机.原型使其看起来像一个类,但应该更恰当地调用它异步发电机功能.原型.原型,因为异步发电机功能是一个实际的JavaScript实体。了解异步发电机实例,请参见异步生成器函数.prototype.prototype.

实例属性

这些属性定义于异步发电机.原型并由所有人共享异步发电机实例。

异步发电机.原型.结构

创建实例对象的构造函数。对于异步发电机实例,初始值为异步发电机功能.原型.

注: 异步发电机对象不存储对创建它们的异步生成器函数的引用。

AsyncGenerator.prototype[Symbol.toStringTag]

的初始值[Symbol.toStringTag]属性是字符串“异步发电机”。此属性用于Object.prototype.toString().

实例方法

还从其父级继承实例方法异步迭代器.

AsyncGenerator.prototype.next()

返回一个承诺将使用产量表达式。

AsyncGenerator.prototype.return()

表现得好像返回语句插入到生成器主体的当前挂起位置,这将完成生成器,并允许生成器在与尝试。。。最后块。

AsyncGenerator.prototype.throw()

表现得好像语句插入到生成器主体的当前挂起位置,这将通知生成器错误条件,并允许它处理错误,或执行清理并关闭自身。

示例

异步生成器迭代

下面的示例在异步生成器上迭代,以递减的时间间隔将值1-6记录到控制台。注意每次Promise是如何产生的,但它是在等待。。。属于循环。

js公司
//异步任务。假装它在做更有用的事情//在实践中。函数delayedValue(时间、值){return new Promise((resolve/*,reject*/)=>{setTimeout(()=>解析(值),时间);});}异步函数*generate(){产量延迟值(2000,1);产量延迟值(1000,2);产量延迟值(500,3);产量延迟值(250,4);产量延迟值(125,5);产量延迟值(50,6);console.log(“全部完成!”);}异步函数main(){for await(generate()的常量值){console.log(“值”,value);}}main().catch((e)=>控制台错误(e));

规格

规范
ECMAScript语言规范
#秒同步发电机对象

浏览器兼容性

BCD表仅在浏览器中加载

另请参见