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);
  });