关于es6 export default

export default 要写在js文件的最外层,但是我要在ajax请求成功后再导出变量,要如何做?放入success里面也不行。
图片描述

阅读 7k
4 个回答

方案1.
ajax 异步改为同步
async: false,

方案2.
既然用了es6了,为什么不用es6的控制执行顺序的那个api呀,

你可以export一个function啊,然后执行function得到结果。 export本身是不能异步的。

你可以这样写

function ajaxFun(url, callback){
    $.ajax({
        ...
        success: (res)=>{
            callback(res);
        }
    });              
}
export default axiosFun

写了一个 async 版本的 简略的代码 这样导出的是一个promise对象 
在别的模块中 import 之后 可以在then 方法中获取到值


export default (async () => {
    let i18n = await new Promise((resolve, reject) => {
        $.ajax({
            success(result) {
                resolve(new VueI18n({message:{en:result.en}}))
            }
        })
    })
    return i18n
})()
=======================================
import i18n from '...i18n'
let i18nData
i18n.then(data => i18nData = data)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题