Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[js] 第410天 js循环中调用异步的方法,如何确保执行结果的顺序是正确的? #2446

Open
haizhilin2013 opened this issue May 29, 2020 · 3 comments
Labels
js JavaScript

Comments

@haizhilin2013
Copy link
Collaborator

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

3+1官网

我也要出题

@haizhilin2013 haizhilin2013 added the js JavaScript label May 29, 2020
@tenadolanter
Copy link

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)
    }
})

@zhenglingfei
Copy link

Promise.all?

@xiaoqiangz
Copy link

xiaoqiangz commented May 6, 2023

  function getPromise(time) {
    return new Promise(function (resolve, reject) {
      setTimeout(()=>{
        resolve(time)
      }, time)
    })
  }
  let times = [2000, 5000, 3000, 6000]
  async function fn(arr) {
    for(const times of arr) {
      const res = await getPromise(times)
      console.log('fn------', res)
    }
  }
  fn(times)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js JavaScript
Projects
None yet
Development

No branches or pull requests

4 participants