zoukankan      html  css  js  c++  java
  • js按顺序执行多个异步函数

    今天跟同事吃饭,无意间谈到了一个技术问题。

    假如有多个异步函数,按照某个顺序执行异步函数,结果依然按照此顺序返回。

    emmm...,按照自己的理解,随意写了一个方法。

    主要用到Promise方法,话不多说,直接上代码:

    1. 定义异步函数p1、p2和p3。

     1     var p1 = function (){
     2         return new Promise((resolve, reject) => {
     3             setTimeout(() => {
     4                 resolve('p1')
     5             }, 1000);
     6         })
     7     }
     8     var p2 = function (){
     9         return new Promise((resolve, reject) => {
    10             setTimeout(() => {
    11                 resolve('p2')
    12             }, 500);
    13         })
    14     }
    15     var p3 = function (){
    16         return new Promise((resolve, reject) => {
    17             setTimeout(() => {
    18                 resolve('p3')
    19             }, 100);
    20         })
    21     }

    2. 将异步函数,按照自己定义的顺序,放到一个数组里

    1 var fnArr = [p2, p1, p3];

    3. 定义函数

     1 var run = function (arr, start = 0){
     2      if(start > arr.length || start < 0) return; // 参数start不能超过    arr.length,不能为负数
     3      var next = function (i){
     4          if(i < arr.length){
     5               var fn = arr[i];
     6               fn().then(res => {
     7                   console.log(res);
     8                   i++;
     9                   next(i)
    10               })
    11           }
    12       }
    13       next(start)
    14  }
    run(fnArr); // 执行方法

    4. 输出结果,如图:

    综上所述。

    如果文章中存在错误的地方,麻烦请大家在评论中指正,以免误人子弟,谢谢!
  • 相关阅读:
    JVM学习-垃圾回收算法
    JVM学习-jvm判断对象已死的方法
    JVM学习-jvm内存区域
    python 多线程
    Python+unittest+requests+excel实现接口自动化测试框架
    linux 运行tensorflow文件缺少_bz2问题及解决
    获取url地址
    微信小程序的小问题(2)
    微信小程序的小问题(1)
    前端知识
  • 原文地址:https://www.cnblogs.com/zhaoyongblog/p/12869497.html
Copyright © 2011-2022 走看看