上次有朋友反饋封裝的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
- 關於defer執行順序問題
- sql中的or與and的執行順序問題SQL
- SQL語句中的AND和OR執行順序問題SQL
- js基礎進階–promise和setTimeout執行順序的問題JSPromise
- SQL中rownum和order by的執行順序的問題SQL
- 有沒有在找工作的朋友,進來交流一下最近的感受心得啊~~
- C++輸出流cout的執行順序問題C++
- 【Oracle】where條件執行順序(上篇的問題延伸)Oracle
- GROUPBY 和開窗函式執行順序的問題函式
- 臺灣遊戲界有問題系列之【老闆有問題】 (轉)遊戲
- 老是遇見奇怪的問題:linux下rman沒有反應問題Linux
- connect by與where條件執行順序問題
- 有個關於多執行緒的識別問題執行緒
- [BUG反饋]選單管理出現問題
- (轉)linux下rman沒有反應問題Linux
- 有研究JSF的朋友進來一下JS
- 我的mysql有點問題MySql
- [BUG反饋]最近在測試時發現pdo有一個問題就是不斷的建立mysql連線MySql
- [BUG反饋]OneThink1.1開發版 在安裝時 出現問題
- 公司網路有問題
- ontape之後沒有反應(問題未解決)
- jboss3安裝有問題多謝幫忙看一下S3
- 在這兒下的 jdon有沒有在sybase資料庫下執行成功的朋友?資料庫
- Java併發(11)- 有關執行緒池的10個問題Java執行緒
- unittest.TestCase中測試用例執行順序問題
- 面試的反殺-你有沒有想要問我的面試
- Git diff hash順序的問題Git
- Oracle有沒有MySQL的分割槽DDL遇到的問題OracleMySql
- 有關模型關聯的問題模型
- 有重複元素的排列問題
- sqlServer修復有問題的表SQLServer
- 有關使用java -Xrunhprof的問題Java
- 有關時間同步的問題
- 有關*.properties檔案的問題
- 新版的Chrome斷點有問題Chrome斷點
- 有沒有改進版本的XPetstore?