uzy*_*zyn 1 javascript events promise dom-events es6-promise
Promise 异步函数应该如何与事件结合完成?
function f() {
return promisedFunction().then(event => {
let buf = '';
event.on('data', data => {
buf += data.toString()
});
event.on('end', () => {
return buf;
});
// how should I return buf here so that the promise would resolve fine?
});
}
Run Code Online (Sandbox Code Playgroud)
这是您无法避免创建新承诺的少数情况之一。你会这样做then并返回它:
function f() {
return promisedFunction().then(event => {
return new Promise((resolve, reject) => {
let buf = '';
event.on('data', data => {
buf += data.toString()
});
event.on('end', () => {
resolve(buf);
});
event.on(/*...presumably there's an error condition?...*/, () => {
reject(/*..details of error..*/);
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
很容易,90% 的情况下,您已经有了一个可以使用的 Promise(Promise 最常见的错误之一是在不必要时创建它们),但是您没有可以用来等待的 Promise您的示例中的事件。
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |