上次有朋友反饋封裝的Promise.all有問題,執行順序有問題,現在改進一下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Promise</title>
</head>
<body>
<script type="text/javascript">
/**
* new Promise 接收一個function作為引數,
* function中有兩個回撥函式作為引數,
* 一個成功的回撥函式,一個是失敗的回撥函式
* **/
var p3 = new Promise(function(resolve, reject) {
setTimeout(() => {
resolve('3秒鐘結束了')
}, 3000)
})
var p5 = new Promise(function(resolve, reject) {
setTimeout(() => {
resolve('5秒鐘結束了')
}, 5000)
})
var p2 = new Promise(function(resolve, reject) {
setTimeout(() => {
resolve('2秒鐘結束了')
}, 2000)
})
p3.then(r => console.log(r))
p5.then(r => console.log(r))
p2.then(r => console.log(r))
//Promise的鏈式呼叫 then中的回撥函式可以接收上一次then的返回值
p2.then(r => {
console.log(r)
return 'aaa'
}).then(c => console.log(c))
//Promise.all 它是以陣列作為物件
// 當陣列中的所有Promise都執行完畢之後才執行then
// 返回的資料是每個Promise物件資料組成的陣列,結果是按照引數順序執行的
// Promise.all([p2,p3,p5]).then(res=>console.log(res))
function promiseAll(arr) {
let newArr = []
//for(let i=0;i<arr.length;i++){
// newArr.push(null)
//}
return new Promise((resolve,reject)=>{
arr.forEach((item,index) => {
newArr.push(null)
item.then(r => {
newArr[index] = r
let flag = newArr.every(v=>v!=null)
if(flag){
resolve(newArr)
}
})
})
})
}
promiseAll([p2, p5, p3]).then(r=>console.log(r))
</script>
</body>
</html>
相關文章
- [BUG反饋]模型管理的編輯處有問題模型
- FrameLayout裡有CardView造成的顯示順序問題View
- SQL語句中的AND和OR執行順序問題SQL
- js基礎進階–promise和setTimeout執行順序的問題JSPromise
- 有問題
- SQL中rownum和order by的執行順序的問題SQL
- C++輸出流cout的執行順序問題C++
- GROUPBY 和開窗函式執行順序的問題函式
- 有個關於多執行緒的識別問題執行緒
- [BUG反饋]OneThink1.1開發版 在安裝時 出現問題
- [BUG反饋]選單管理出現問題
- 有沒有在找工作的朋友,進來交流一下最近的感受心得啊~~
- token有點問題
- Jetpack Compose的Modifier順序問題Jetpack
- [BUG反饋]最近在測試時發現pdo有一個問題就是不斷的建立mysql連線MySql
- Java併發(11)- 有關執行緒池的10個問題Java執行緒
- 有return的情況下try catch finally的執行順序
- wsl中用qemu執行linux kernel ,ping github.com有問題LinuxGithub
- 新版的Chrome斷點有問題Chrome斷點
- 有關模型關聯的問題模型
- [BUG反饋]onethink\ThinkPHP\Library\OT\Database.class.php 問題反饋PHPDatabase
- 目前“好評返現”有幾個問題?
- mysql order by 和 group by 順序問題MySql
- 移動端順序問題上
- Oracle有沒有MySQL的分割槽DDL遇到的問題OracleMySql
- [BUG反饋]AuthGroupModel的CheckId有BUG
- 有關this指標指向問題指標
- OneThink版本 1.0.131218 URL有問題
- [提問交流]在Apache下重定向問題 /login 重定向到 /home/passport/login 有問題ApachePassport
- [BUG反饋]PDO連線亂碼問題
- 面試的反殺-你有沒有想要問我的面試
- 有關於css中行高的問題CSS
- 工控機的常見問題有哪些
- 有關 socialiteproviders 存在的幾個問題IDE
- 有關Laravel Passport認證的問題LaravelPassport
- 請問新建話題是不是有問題?版主幫忙看看
- [BUG反饋]ot資料庫備份問題資料庫
- [BUG反饋]form表達提交查詢問題ORM