我有一个异步做某事的功能,例如,
const doSomething = () => {
request(url)
.pipe(hasher)
.on('finish', () => {
// "return" only here
return hasher.read();
});
});
我现在想等待"在函数中,直到hasher.read()
可以返回,而不是提前undefined
返回(这是上面的变体所做的)。
理想情况下,我会将doSomething
用作
const out = yield doSomething();
任何提示?
答案 0 :(得分:0)
使用deferred:
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
。