3 回答
TA贡献1797条经验 获得超6个赞
您可以promisify使用您的代码,然后使用async..await.
function getFileSize(filename) {
return new Promise((resolve) => {
setTimeout(() => resolve((fileSizes[filename])), Math.random() * 500);
});
}
async function sumFileSizes(filename1, filename2) {
const size1 = await getFileSize(filename1, cb);
const size2 = await getFileSize(filename2, cb);
return size1 + size2;
}
请注意,异步函数返回一个promise,因此您需要执行以下操作:
sumFileSize(filename1, filename2).then(cb); // cb is callback function
另请注意,这async..await是一项新功能,在旧版浏览器中将不支持。您可能必须使用转译器babel来转换 ES5 中的代码。
TA贡献1719条经验 获得超6个赞
使用承诺,等待/异步
// Work to do
const work = (param) => {
return new Promise((resolve, reject) => {
// Do some time consuming stuff
setTimeout(() => {
// When done, resolve
resolve(param * param);
}, 3000);
});
}
// Run async function
(async () => {
// Run worker and wait till finish
const result = await work(3);
// Use result
const finalResult = result * 2;
// Log
console.log(finalResult);
})();
TA贡献1998条经验 获得超6个赞
getFileSize(filename1, (value1) => {
getFileSize(filename2, (value2) => {
callback(value1 + value2)
})
})
添加回答
举报