我是靠谱客的博主 苗条小海豚,最近开发中收集的这篇文章主要介绍如何通过 yield和Generate 函数 实现 多个未知个数的异步请求实现顺序调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前文

需求:由于一次请求多个图片,服务器会有压力,所以采取分批多次请求,但需要实现顺序调用

解决方法

原本我想到是用Promise来解决这个回调地狱的问题,但我发现,多次请求的次数不是固定的,因为每次请求的图片数量不是固定的
后来通过百度了解到 生成器Generate和yield 也可以解决此类问题,于是参考一些blog后,解决了。

参考文章

链接: Generator 函数的含义与用法
链接: Javascript中如何让多个异步按顺序执行

正文

由于需要创建多个function来分步执行,我采用循环赋值匿名函数的方式,并保存在对象中

// 创建多个分步函数
let tempArr=[1,2,3,4]
let funcList = tempArr.map((e, index) => {
return {
["func-" + index]: (data) => {
setTimeout(() => {
console.log("func-" + index);
task.next();
}, 1000);
},
};
});

然后创建生成器Generate函数

//创建生成器Generate函数,并立即执行下一步
function* main() {
for (let _index = 0; _index < tempArr.length; _index++) {
const element = tempArr[_index];
yield funcList[_index]["func-" + _index]();
}
}
const task = main();
task.next();

这样不管分多少次调用接口,都能按顺序执行。

最后

以上就是苗条小海豚为你收集整理的如何通过 yield和Generate 函数 实现 多个未知个数的异步请求实现顺序调用的全部内容,希望文章能够帮你解决如何通过 yield和Generate 函数 实现 多个未知个数的异步请求实现顺序调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部