JavaScript实现串行请求的示例代码
短视频,自媒体,达人种草一站服务 这篇文章主要介绍了JavaScript实现串行请求的示例代码,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下 使用async和await var fn = async function(promiseArr) { Promise实现 依照 promises 规范,一旦一个 promise 被创建,它就被执行了。如果then方法里返回的是一个promise对象,那么执行下一个then 的时候必定是在上一个then执行完之后执行。 关键点在于then的时候再创建 var createPromise = function(time) { function serpromise(arr) { var arr=[createPromise(2),createPromise(1),createPromise(3),createPromise(4),createPromise(5)]; Array.prototype.reduce + async/await 版本 const reduceAsync = ( arr ) => { Array.prototype.reduce + Promise 版本 const reducePromise = ( arr ) => { # 执行结果 { 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 版本 const mapPromise = ( arr ) => { 用 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版本类似 const mapPromise = ( arr ) => { 其他 Array.prototype.forEach、Array.prototype.filter、Array.prototype.some、Array.prototype.every等方法和Array.prototype.map类似,就不过多赘述 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |