Promise实战
Promise 实现串行
const p = Promise.resolve();
apis.forEach(api => {
p = p.then(fetch(api));
});
p.then(res1).then(res2)...const p = apis.reduce((promise,api) => promise.then(fetch(api)),Promise.resolve())Promise 并发缓存
const sqlResult = 'sql result';
let cacheDate = '';
let cachePromise = null;
function SQL() {
if (cacheDate) return cacheDate;
if (cachePromise) return cachePromise;
cachePromise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('只执行一次');
resolve(sqlResult);
cacheDate = sqlResult;
cachePromise = null;
}, 1000);
});
return cachePromise;
}
for (let i = 0; i < 10; i++) {
SQL().then((res) => {
console.log(res);
});
}
promise 并发排队
Promise 错误捕获
Promise的微任务
参考
Last updated