promise
2022-02-16 本文已影响0人
懒懒猫
1.promise.all()
allSynchronizationSite.forEach(item => {
if (item.status === '1' && item.fromId === 'admin') {
msgArr.push(
getSynchronizationSiteMessage(params).then(res => {
console.log(res)
})
)
}
})
Promise.all(msgArr).then(data => {
console.log('msgArr执行完后执行',)
})
2.then()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>promiset</title>
</head>
<body>
<script>
// 需求: ajax1执行完再执行ajax2,ajax2执行完再执行task
var flag1 = true
var flag2 = true
function ajax1() {
console.log(111111)
return new Promise((resolve, reject) => {
console.log(22222)
setTimeout(function() {
console.log('ajax1');
if (flag1) {
resolve('ajax1的结果')
} else {
reject("ajax1错误!")
}
}, 1000)
})
}
function ajax2(data) {
return new Promise((resolve, reject) => {
setTimeout(function() {
console.log('ajax2');
if (flag2) {
resolve('ajax2的结果', data)
} else {
reject("ajax2错误!")
}
}, 2000)
})
}
function task(data) {
console.log('task');
console.log(data)
}
function error(err) {
console.log(err)
}
console.log(444444)
// ajax1()
// .then(ajax2)
// .then(task)
// .catch(error)
ajax1()
.then(function(data) {
return ajax2(data) //Promise的参数机制要求必须是return
})
.then(function(data) {
task(data)
})
.catch(error)
// ajax1()
// .then(function(data) {
// return ajax2(data)
// })
// .then(function() {
// task()
// })
// .catch(function() {
// console.log('err');
// })
console.log(333333)
//执行顺序4-1-2-3-ajax1-ajax2-task
</script>
</body>
</html>