javascript 异步回调链式调用 promise

复制代码
<script>
  new Promise((resolve,reject) => {
    setTimeout(()=>{
      resolve('sss');
    },1000);
  }).then((data) =>{
    console.log(data);//注意,此处不能写异步回调,异步必须写在下面的promise方法体内部,否则会有问题
    return new Promise(resolve => {
      resolve(data + "bbb");
    });
  }).then(data =>{
    console.log(data)
  });
</script>
复制代码

 还有一个Promise.all方法

复制代码
Promise.all([
  new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(null);
    }, 1000);
    
  }),
  new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(null);
    }, 3000);
  })
]).then(result => {
  alert("ok");
});
复制代码

 Promise.all的语法是并发的,如果要顺序执行:

复制代码
var promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(null);
  }, 1);  //延迟以便后续的then可以接上
});

for (var i = 0; i < 100; i++) {
  let num = i;
  promise = promise.then(data => {
    return new Promise((resolve, reject) => {
      console.log("start " + num);
      setTimeout(() => {
        console.log("end " + num);
        resolve(num);
      }, 10);
    })
  });
  promise.num = i;
}

promise.then(data => {
  console.log("all over")
});
复制代码

 

posted on   空明流光  阅读(249)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-11-02 代码可控安装 iis
2020-11-02 vbs以管理员身份运行安装iis

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示