我正在使用一个辅助函数来创建我所谓的“扁平承诺” -
function flatPromise() {
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise, resolve, reject };
}
而我是这样使用它的 -
function doSomethingAsync() {
const { resolve, reject, promise } = flatPromise();
setTimeout(() => {
resolve('done!');
}, 500);
return promise;
}
请提供需要翻译的完整内容,以便我能够为您提供准确的翻译。
function flatPromise() {
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
return { promise, resolve, reject };
}
function doSomethingAsync() {
const { resolve, reject, promise } = flatPromise();
setTimeout(() => {
resolve('done!');
}, 500);
return promise;
}
(async function run() {
const result = await doSomethingAsync()
.catch(err => console.error('rejected with', err));
console.log(result);
})();
编辑:
我创建了一个名为flat-promise的NPM包,该代码也可以在GitHub上获得。
Promise
传递的回调必须同步执行,以允许“导出”这两个函数。 - Felix Kling