分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

js实现多个请求并列执行

发布时间:2023-09-06 01:53责任编辑:彭小芳关键词:js

早上查资料,偶然发现这个话题,发现自己并不会,于是乎,下来研究了一下。

想想之前我们用jquery写请求的时候,要实现请求的串行执行,我们可能是这么做的。

$.ajax({ ???url: ‘‘, ???data: ‘‘, ???success: function (data) { ??????$.ajax({ ???????????url: ‘‘, ???????????data: ‘‘, ???????????success: function (data) { ???????????????$.ajax({ ???????????????????// 如此一层嵌套一层 ???????????????}) ???????????} ???????}) ????}})

回掉嵌套的这么深,看起来很痛苦啊,于是乎我们的promise出现啦,完美的解决我们的回掉地狱~

使用promise实现==串行==很简单,调用promise.all()方法就好

那如何比较优雅的实现几个操作的==串行==呐?

在promise中返回一个promise对象就是一个串行。
下面我们来简单实现一个。

下面/** * 创建promise * @param {Number} value ?*/function makePromise (value) { ?return new Promise((resolve) => { ???setTimeout(() => { ?????resolve(value); ???}, Math.random() * 1000) ?})}/** * 打印结果 * @param {Number} value ?*/function print (value) { ?return value}let promises = [1, 3, 4, 5, 6].map((item, index) => { ?return makePromise(item)});// 并行执行Promise.all(promises).then(() => { ?console.log(‘done‘)}).catch(() => { ?console.log(‘error‘)})// 串行执行let parallelPromises = promises.reduce( ?(total, currentValue) => total.then(() => currentValue.then(print)),Promise.resolve())parallelPromises.then(() => { ?// console.log(‘done‘)}).catch(() => { ?console.log(‘done‘)})// 顺带复习一下reduce方法reduce((total, currentValue, currentIndex, arr) => {}, initialValue)let arr1 = [1, 2, 3, 4, 5]let res = arr1.reduce((total, currentValue, currentIndex, arr) => { ???return total + currentValue});

js实现多个请求并列执行

原文地址:https://www.cnblogs.com/running1/p/9023427.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved