Promise结合reduce构建顺序执行队列

    Promise是一个解决函数异步执行的对象,有了这个对象,我们可以构造异步执行的操作。Promise对象可以通过链式调用的方式进行异步操作,语法如下:

    

    如下代码,是一个简单的异步方法。

new Promise((resolve,reject)=>{
	console.log("promise-> hello,world.this is promise. "+new Date());
	setTimeout(()=>{
		resolve("hello,world.this is promise. "+new Date());
	},1000);
}).then((value)=>{
	console.log("then   -> "+value);
});

    运行这段代码,得到结果如下所示:

     

    通过Proimse我们很好的构建了一个异步操作,then中的函数始终都会在resolve()执行之后才开始执行。resolve()可以携带参数,这个参数到了then里面,就可以通过回调函数中的参数获取了,如题所示的value值,就是通过resolve(args)传递过来的。 

    另外,这里还有一个reject函数,就是当Promise内部执行出现异常,我们才会调用。这时候,一般then是不会执行的,这里

### JavaScript Promise 链式调用实现顺序执行 为了使多个异步操作按照特定顺序依次完成,可以利用 `Promise` 的链式调用来构建一个同步流程。这种方式不仅保持了代码的清晰度,还能够有效处理依赖关系。 下面是一个简单的例子来展示如何通过 `.then()` 方法链接多个 `Promise` 实现顺序执行: ```javascript function taskA() { console.log('Task A started'); return new Promise((resolve) => setTimeout(() => {console.log('Task A completed'); resolve();}, 1000)); } function taskB() { console.log('Task B started'); return new Promise((resolve) => setTimeout(() => {console.log('Task B completed'); resolve();}, 500)); } function taskC() { console.log('Task C started'); return new Promise((resolve) => setTimeout(() => {console.log('Task C completed'); resolve();}, 2000)); } // 使用 .then 进行链式调用 taskA() .then(taskB) .then(taskC); ``` 上述代码片段展示了三个函数分别代表不同的任务,并返回各自的 `Promise` 对象[^1]。当这些任务被串联起来时,只有当前面的任务成功完成后才会继续下一个任务。 对于更复杂的场景,比如需要传递数据给后续的操作,则可以在每次回调中返回新的值作为下一次操作的基础输入参数: ```javascript function getNumber(num){ return new Promise(resolve=>setTimeout(()=>resolve(num),100)) } getNumber(1).then(result=>{ console.log(`First number:${result}`); return result * 2; }).then(doubledResult=>{ console.log(`Doubled Number:${doubledResult}`); }); ``` 在这个案例里,第一个 `Promise` 解析后的结果会被传入到第二个`.then()`方法中的匿名函数内成为其形参;同样地,在该匿名函数内部也可以再次创建并解析另一个 `Promise` 或者直接返回任何类型的值供后面的处理器使用[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值