素材牛VIP会员
js中一个打印数据的问题
 so***t0  分类:JavaScript  人气:849  回帖:1  发布于6年前 收藏

apis.js代码如下

import $ from 'jquery'

let result = {
  news: []
}

$.ajax({
  url: 'http://sayer.dev/index.php?s=/article/get_lists',
  method: 'get',
  success: res => {
    result.news = res.data
  }
})

module.exports = result

模板main.pug内容 如下

-const results = require('../core/apis.js')
-console.log(results)
-console.log(results.news)

两次输出的结果如下:

第一次打印的时候 有news的这个数组的 第二次就没有了请问是什么问题

 标签:javascript

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv6 码匠
15***57 UI设计师 6年前#1

你这很明显的异步问题啊,ajax发起请求是异步的,输出result的时候ajax请求还没完成,就输出result了。
解决办法

  1. callback

这个省略,自己改造

  1. async await
module.exports = async function () {
    let result = {
        news: []
    }
    
    await $.ajax({
        url: 'http://sayer.dev/index.php?s=/article/get_lists',
        method: 'get',
        success: res => {
            result.news = res.data
        }
    })

    return result;
}
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取