主题
将项目推向拖动器
安装
npm install @async-generators/subject --save
yarn add @async-generators/subject
这个包裹 main a 的切入点 commonjs dis.
这个 module a 的切入点 es2015 模块。 两者都需要本土的合成-生成器支持,或用网包装入器下编译.
阿庇语Name
苏普勒( )
Subject 提供三种方法: next(item), (中文(简体) ), error(err),以及 done() 推动数据和事件。 何时 [Symbol.asyncIterator] 称为内部订阅。 被推取的物被缓冲(每个活体)到被消耗的活体拉出. 如果消耗的迭代器将物品拉得慢于被推向被主体的速度,那么内部缓冲会继续增大. error(err) 将会导致执行者将给定的错误重推给消费者并处理对象.
示例
实例.js
const {Subject} = require('@async-generators/subject');
let subject = new Subject<number>();
async function* source(){
yield 1; yield 2; yield 3; yield 4;
}
async function main() {
let reader = async function () {
for await (let item of subject) {
console.log("PULL:", item);
}
};
let readers = [reader(), reader()];
let writer = async function () {
for await (let item of source()){
console.log("PUSH:", item);
subject.next(item);
}
subject.done();
}
await writer();
await Promise.all(readers);
}
main().catch(console.log);
用最新的节点执行. js 9 :
node --harmony example.js
输出 :
PUSH: 1
PUSH: 2
PULL: 1
PULL: 1
PUSH: 3
PULL: 2
PULL: 2
PUSH: 4
PULL: 3
PULL: 3
PULL: 4
PULL: 4
字体
此库已完全输入, 可以使用 :
import {Subject} from '@async-generators/subject');
ts-node --harmony foo.ts