第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

js 用promise處理并發(fā)的時(shí)候遇到一些奇怪的問題?

js 用promise處理并發(fā)的時(shí)候遇到一些奇怪的問題?

幕布斯6054654 2019-02-26 21:18:00
先定義一個(gè)返回promise函數(shù)的函數(shù),成功時(shí)返回預(yù)定義的時(shí)間值function getTime(time) {            return new Promise(function (resolve, reject) {                setTimeout(function () {                    resolve(time)                }, time)            })        }var times = Array.apply(null, Array(100)).map(function (n, index) {//定義一個(gè)0-990間隔為10的預(yù)定義時(shí)間的數(shù)組            return index * 10;        })var RealTimes = [];//真實(shí)的返回時(shí)間var log = [];var startTime = new Date();  times.map(getTime).forEach(function (timePromise, index) {      timePromise.then(function (time) {        RealTimes.push(new Date() - startTime);         if (RealTimes.length === times.length) {              RealTimes.map(function (value, index) {                        log.push(`${times[index]}(${value})`)                    })                    console.log(log);                }            })        })下面是執(zhí)行后輸出的預(yù)定義的時(shí)間和真實(shí)返回的時(shí)間的對(duì)比
查看完整描述

1 回答

?
富國(guó)滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

  1. 第一個(gè)setTimeout任務(wù)是在兩次遍歷以后才執(zhí)行的,一次times.map(getTime),一次之后的forEach,從結(jié)果看setTimeout(fn,0)是過了48ms才執(zhí)行的,基本是兩次遍歷的耗時(shí)。之后,每一個(gè)setTimeout任務(wù)執(zhí)行時(shí)都會(huì)觸發(fā)promise.then再執(zhí)行一段js,就是那段push數(shù)組和判斷打印的邏輯,promise.then的異步優(yōu)先級(jí)是要比setTimeout高的,下一個(gè)setTimeout要等上一個(gè)setTimeout的promise.then執(zhí)行完才會(huì)觸發(fā)執(zhí)行的。從結(jié)果看,后面每個(gè)setTimeout執(zhí)行的間隔都在10ms左右,基本是執(zhí)行promise.then的耗時(shí)。

  2. 后面兩個(gè)例子console.log(time)打印的都是傳入的參數(shù),是自己和自己比。

  3. Promise.all(times.map(getTime)).then(function(time) {console.log(time)})返回結(jié)果應(yīng)該是個(gè)數(shù)組,和times完全一致。


查看完整回答
反對(duì) 回復(fù) 2019-03-07
  • 1 回答
  • 0 關(guān)注
  • 399 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)