1

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

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

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

理想情况下,我会doSomething用作

const out = yield doSomething();

有什么提示吗?

4

1 回答 1

0

使用延迟怎么样:

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;
});

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

于 2015-12-11T21:14:52.663 回答