我有一个异步执行某项功能的函数,例如
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
。