文章 评论 浏览 29
function request(url) { const timeOut = Math.random() * 10; const result = url +': ' + timeOut + 's'; return new Promise((res, rej) => { try { setTimeout(() => { // console.log(url, result); res(result); }, timeOut * 1000); } catch (error) { console.error(url, error); rej(error); } }); } function multiRequest(urls, maxNum = 3) { let requestedIndex = 0; let currentReqestting = 0; const results = {}; function pushRequest(url, callback) { if (requestedIndex >= urls.length || currentReqestting >= maxNum) { return; } request(url) .then((res) => { results[url] = res; currentReqestting--; if (Object.keys(results).length >= urls.length) { callback(); } pushRequest(urls[requestedIndex], callback); }) .catch(e => { results[url] = e; currentReqestting--; if (Object.keys(results).length >= urls.length) { callback(); } pushRequest(urls[requestedIndex], callback); }); currentReqestting++; requestedIndex++; pushRequest(urls[requestedIndex], callback); } return new Promise((res, rej) => { try { if(requestedIndex < urls.length && currentReqestting < maxNum){ pushRequest(urls[requestedIndex],() => { res({ urls, results }); }); } } catch (error) { rej({ urls, error }); } }); } multiRequest(['/sale_center/sale_order/', '/sale_center/klicen_order/', '/sale_center/terminal_order/', '/sale_center/xyt_order/', '/sale_center/patch_order/']) .then(({ urls, results }) => { console.log('------------------------------'); console.log(results); urls.forEach(url => { console.log(results[url]); }); });
请问
console.log("" == [null])
为什么是true啊???
换句话说,为什么
ToPrimitive([null])
结果是"" ?????
文章 0 评论 0
接受
第 153 题:实现一个批量请求函数 multiRequest(urls, maxNum)