鍍金池/ 問答/HTML/ js中一個(gè)打印數(shù)據(jù)的問題

js中一個(gè)打印數(shù)據(jù)的問題

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內(nèi)容 如下

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

兩次輸出的結(jié)果如下:
圖片描述

第一次打印的時(shí)候 有news的這個(gè)數(shù)組的 第二次就沒有了請問是什么問題

回答
編輯回答
心癌

你這個(gè)應(yīng)該是 第二次輸出 是因?yàn)槟闼⑿马撁? 它請求沒有完畢你就輸出了result把

2017年10月10日 11:21
編輯回答
短嘆

你這很明顯的異步問題啊,ajax發(fā)起請求是異步的,輸出result的時(shí)候ajax請求還沒完成,就輸出result了。
解決辦法

  1. callback

這個(gè)省略,自己改造

  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;
}
2017年4月9日 06:41