猿问

关于ajax异步加载请问数据延迟问题

在外面定义一个空数组,然后做一个ajax请求,请求内再嵌套一个请求,最终拼接成一个三个对象插入空数组。
最终出来的结果顺序都是不一样的,因为for循环执行,但是ajax请求是异步的。最终结果受for循环影响,每次获得的数组结果里面的对象字段顺序都不一样要怎么解决。

代码示例:

青春有我
浏览 525回答 1
1回答

宝慕林4294392

ajax 是异步的,当执行到你的 log 代码时,ajax 还没有返回呢。给你一个大致的程序吧function getFirst() {  return new Promise((resolve, reject) => {    $.ajax({      url: '',      success: (res) => {        resolve(res);      },      fail: (e) => {        reject(e);      }    });  });}function getSecond() {  return new Promise((resolve, reject) => {    $.ajax({      url: '',      success: (res) => {        resolve(res);      },      fail: (e) => {        reject(e);      }    });  });}function getThird() {  const getFiles = devId_arr    .map(file => getSecond(file));    return Promise    .all(getFiles)    .then(datas => {        // 处理    })}// 主程序getThird().then((data => {    console.log(data);}))
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答