欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript实现串行请求的示例代码

程序员文章站 2022-04-11 08:21:55
使用async和awaitpromise实现依照 promises 规范,一旦一个 promise 被创建,它就被执行了。如果then方法里返回的是一个promise对象,那么执行下一个then 的时...

使用async和await

promise实现

依照 promises 规范,一旦一个 promise 被创建,它就被执行了。如果then方法里返回的是一个promise对象,那么执行下一个then 的时候必定是在上一个then执行完之后执行。

关键点在于then的时候再创建

array.prototype.reduce + async/await 版本

array.prototype.reduce + promise 版本

# 执行结果
{ req: 'pm:04:49:08', rep: 'pm:04:49:11', item: 1 }
{ req: 'pm:04:49:11', rep: 'pm:04:49:14', item: 2 }
{ req: 'pm:04:49:14', rep: 'pm:04:49:17', item: 3 }
{ req: 'pm:04:49:17', rep: 'pm:04:49:20', item: 4 }

array.prototype.map + promise 版本

用 map 遍历时,需要过滤初始promise的返回值,并且在遍历结束后,需手动执行最后以后一个promise,否则就会变成如下结果

# 执行结果
{}
{ req: 'pm:04:49:08', rep: 'pm:04:49:11', item: 1 }
{ req: 'pm:04:49:11', rep: 'pm:04:49:14', item: 2 }
{ req: 'pm:04:49:14', rep: 'pm:04:49:17', item: 3 }

以上结果明显不是我们所需要的,但是需要手动过滤第一个promise和执行最后一个promise,会增项不必要的代码量和出错率 后将 mappromise 修改如下,其原理和array.prototype.reduce+promise版本类似

其他

array.prototype.foreach、array.prototype.filter、array.prototype.some、array.prototype.every等方法和array.prototype.map类似,就不过多赘述

以上就是javascript实现串行请求的示例代码的详细内容,更多关于javascript实现串行请求的资料请关注其它相关文章!