【问题标题】:Create generator from event emitter从事件发射器创建生成器
【发布时间】:2016-03-17 20:00:49
【问题描述】:

我有一个异步执行某些操作的函数,例如,

const doSomething = () => {
  request(url)
  .pipe(hasher)
  .on('finish', () => {
    // "return" only here
    return hasher.read();
  });
});

我现在想在函数中“等待”直到可以返回 hasher.read(),而不是提前返回 undefined(这是上面的变体所做的)。

理想情况下,我会使用doSomething

const out = yield doSomething();

有什么提示吗?

【问题讨论】:

标签: javascript asynchronous async-await generator co


【解决方案1】:

如何使用延迟:

const q = require('q');

const doSomething = () => {
  const d = q.defer();

  request(url)
  .pipe(hasher)
  .on('finish', () => {
    // "return" only here
    d.resolve(hasher.read());
  });

  return d.promise;
});

然后你可以把它当作一个promise来处理并使用yield

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2023-03-09
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多