问答

js中异步方法执行顺序问题

作者:admin 2021-05-07 我要评论

假设我有多个异步方法task1() task2() task3()...我想这些方法全部异步执行,在所有方法执行完毕之后再执行final()这个方法,应该如何实现 具体例子: 编写油猴...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

假设我有多个异步方法task1() task2() task3()...我想这些方法全部异步执行,在所有方法执行完毕之后再执行final()这个方法,应该如何实现

具体例子:
编写油猴脚本时使用GM_xmlhttpRequest,用for循环开启多个请求:

for (let i = 0; i < length; i++) {
  let gameNum = ""
  let url = "" //每次循环会附上不同gameNum和url值
  GM_xmlhttpRequest({
        method: "GET",
        context: {
          gameNum: gameNum,
        },
        url: url,
        synchronous: true,
        onload: haveCloud,
  });
}

此外有一数组

let game = []

每次请求的回调函数haveCloud会对geme数组进行修改
想要在所有请求完成后将数组输出
大概是这么个要求

###
let game = [];
let promiseArr = [];
for (let i = 0; i < length; i++) {
  let gameNum = ""
  let url = "" //每次循环会附上不同gameNum和url值
  promiseArr.push(new promise((res)=>{
  GM_xmlhttpRequest({
        method: "GET",
        context: {
          gameNum: gameNum,
        },
        url: url,
        synchronous: true,
        onload: (response)=>{
        haveCloud(response);
        res(true)
        }
  }));
  }) 
}
Promise.all(promiseArr).then(()=>{console.log(game)})
###

https://developer.mozilla.org...

###
getGameInfo(gameNum, url) {
    GM_xmlhttpRequest({
        method: "GET",
        context: {
          gameNum: gameNum,
        },
        url: url,
        synchronous: true,
        onload: haveCloud,
    });
}
const functions = []
for (let i = 0; i < length; i++) {
  functions.push(getGameInfo(gameNum, url)) // 自己补获取 gameNum 和 url 的代码
}
game = await Promise.all(functions)

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • js中异步方法执行顺序问题

    js中异步方法执行顺序问题

  • 默认浏览器或者微信自带浏览器能否打开

    默认浏览器或者微信自带浏览器能否打开

  • 请问这个element ui项目的菜单写在哪里

    请问这个element ui项目的菜单写在哪里

  • ios webclip的工具栏如何隐藏 头部总是

    ios webclip的工具栏如何隐藏 头部总是

腾讯云代理商
海外云服务器