Promise并发控制库
Promise的并发控制
simple code
function getNumber(){
var p = new Promise(function(resolve, reject){
//做一些异步操作
setTimeout(function(){
var num = Math.ceil(Math.random()*10); //生成1-10的随机数
if(num<=5){
// 可以理解正确返回
resolve(num);
}
else{
// 有异常了
reject('数字太大了');
}
}, 2000);
});
return p;
}
doSomething()
.then(function (result) {
return doSomethingElse(result);
})
.then(function (newResult) {
return doThirdThing(newResult);
})
.then(function (finalResult) {
console.log(`得到最终结果:${finalResult}`);
})
.catch(failureCallback);
Promise转同步
async queryUserCount() {
const result = await this.pointService.getUserAllPointInfo();
}
# 如果是直接 return 方法,不需要加 await 也是同步
并发
// 模拟异步任务
function asyncTask(index) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`Async Task ${index} completed`);
resolve(`Result from Async Task ${index}`);
}, Math.random() * 2000);
});
}
// 创建包含多个Promise的数组
const promises = [];
const numTasks = 3;
for (let i = 1; i <= numTasks; i++) {
promises.push(asyncTask(i));
}
// 并发执行多个异步任务
Promise.all(promises)
.then(results => {
console.log('All tasks completed successfully');
console.log('Results:', results);
})
.catch(error => {
console.error('One or more tasks failed:', error);
});