【发布时间】:2019-02-26 23:26:57
【问题描述】:
这是一个更笼统的问题,但我无法以更笼统的方式编写它,所以我不得不使用我正在处理的示例。
无论如何,我查看了 async+await,但似乎带有 resolve 箭头功能的 Promise 不能用于此示例。那么是否可以重构这个函数并调用代码,使调用 getFeaturesFromStream 之后的代码在调用 on('end') 代码之前不被调用?
private features : FeatureObject[] = [];
getFeaturesFromStream() {
const url = 'http://localhost:19100/api/v1/fetch?cgid=22&north=6853000.0&east=24505000&south=6850000.0&west=24500000.0';
var self = this;
oboe(url)
.node('!', (row) => {
console.log(row);
self.features.push(row);
})
.on('end', () => {
console.log('only after this we can proceed');
});
}
async getFeatures() : Promise<void> {
getFeaturesFromStream();
codeNotTobeCalledBeforeArrayReady();
}
【问题讨论】:
-
不熟悉 oboe.js 但 rxjs 是为流处理而构建的
-
谢谢。在这一点上,我实际上对 js / ts 程序执行流程机制比对流媒体更感兴趣,但是如果没有这个流媒体示例,我无法提出一个简单的问题。
-
这和js执行和事件循环无关,和oboe.js的具体实现有关,这是流处理。事件处理逻辑本质上是一个流。 rxjs 提供了像这样控制执行流程的工具。
标签: angular typescript async-await oboe.js