当前位置: 首页 > 面试题库 >

js循环中调用异步的方法,如何确保执行结果的顺序是正确的?

赫连瀚
2023-03-14
本文向大家介绍js循环中调用异步的方法,如何确保执行结果的顺序是正确的?相关面试题,主要包含被问及js循环中调用异步的方法,如何确保执行结果的顺序是正确的?时的应答技巧和注意事项,需要的朋友参考一下

An example:

let searchApi = function(arg){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            console.log(arg)
            resolve(arg)
        }, 20)
    })
};
let fields = [1,2,3,4];
let arr = new Array(fields.length);
await fields.forEach(async (vvv, index) => {
    const obj = await searchApi(vvv)
    arr[index] = obj
    const tempArr = JSON.parse(JSON.stringify(arr))
    if(tempArr.every(Boolean)){
        console.log(arr)
    }
})
 类似资料:
  • 问题内容: 给定以下函数调用: 的执行顺序和未指定,所以可以之前被调用或之前在。 是否指定函数参数表达式的执行顺序或未指定的顺序? 问题答案: 从Java语言规范(关于表达式)中: 15.7.4从左到右评估参数列表 在方法或构造函数调用或类实例创建表达式中,参数表达式可能出现在括号内,以逗号分隔。每个参数表达式似乎都在其右侧任何参数表达式的任何部分之前被完全评估。

  • 我在Scala中为期货编写了许多不同的单元测试。所有异步调用都使用执行上下文。为了确保异步调用始终以相同的顺序执行,我需要延迟一些任务,这相当困难并且会减慢测试速度。执行程序可能仍(取决于其实现)先完成某些任务,然后再完成其他任务。 测试具有特定执行顺序的并发代码的最佳方式是什么?例如,我有以下测试用例: 其中delay是< code > def delay()= thread . sleep(4

  • 问题内容: 我是Node的新手,但我已经喜欢它。唯一的问题是,异步功能使我丧命。 我正在使用google软件包来获取我的网站在google中的排名,如下所示: 我的问题是,尽管我在关键字数组中定义了三个,但控制台日志为所有网站显示了相同的关键字。 我想念什么? 问题答案: 这里的直接问题是,和变量在调用回调之前会不断变化。 一个简单的解决方案是在闭包中保护此变量: 当您仅使用简单数组时,还可以通过

  • 问题内容: 当每个呼叫都取决于之前的呼叫是否已完成时,我试图找到创建异步呼叫的最佳方法。目前,我通过递归调用定义的流程函数来链接方法,如下所示。 这就是我目前正在做的。 然后我将其称为如下 虽然这对我来说非常好,但我不禁认为必须有一种更好(更简单)的方法。以后我的递归调用变得太深时,会发生什么? 注意 :我不是在浏览器中使用javascript,而是在Titanium框架中使用本机,这类似于Nod

  • 问题内容: 我有一类通用的代码是线程安全的。 该类中的方法之一是抽象的,需要针对不同的实现重写。 我需要确保或至少向其他开发人员标记此方法的所有实现都必须是线程安全的。 做这个的最好方式是什么? 是否有关键字或注释可达到此目的? 我已经尝试过了,但是不允许使用关键字组合。 问题答案: 您不能直接这样做。您可以做的一件事是将方法具体化,但是调用一个抽象方法: 这样,doFoo()将始终*在foo()

  • 我有这个方法,我试图调用一个方法(),它在迭代列表时返回单声道。我希望确保为每个列表元素调用此方法。因此,我在生成的Mono中添加了然后()。此外,我希望方法仅在上传所有文件后执行。这是正确的方法吗?或者我可以使用其他操作符吗?。cadmiumClient.notify镉()也返回单声道单位。 我还调用了