我有一个异步执行某项功能的函数,例如

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


我现在想在函数中“等待”,直到返回hasher.read()而不是使用undefined尽早返回(以上变体就是这样做的)。

理想情况下,我将doSomething用作

const out = yield doSomething();


有什么提示吗?

最佳答案

如何使用延期:

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

07-24 17:48