如何等待axios调用完成

时间:2017-12-15 10:24:02

标签: javascript ajax vue.js axios

在vuejs应用程序中,我试图从ajax调用的数据初始化一个对象:

let settings = {}
api.readConfig().then((config) => {
  settings = {
    userStore: new Oidc.WebStorageStateStore(),
    authority: config.data.urls.auth,
    client_id: config.data.clientid,
    redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}${process.env.ROUTER_BASE}static/callback.html`,
    response_type: 'id_token token',
    post_logout_redirect_uri: config.data.urls.auth,
  }
})

const authMgr = new Oidc.UserManager(settings)
export default authMgr

通过调用返回导出对象,使所有设置为null。

如何在导出const之前等待通话?

1 个答案:

答案 0 :(得分:3)

你不能阻止export,但你能做的就是这样,就是叫promise链。在这里,您可以将解决承诺的责任转移到callee模块。

export default api.readConfig().then((config) => {
  return {
    userStore: new Oidc.WebStorageStateStore(),
    authority: config.data.urls.auth,
    client_id: config.data.clientid,
    redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}${process.env.ROUTER_BASE}static/callback.html`,
    response_type: 'id_token token',
    post_logout_redirect_uri: config.data.urls.auth,
  }
}).then((settings) => {
  return new Oidc.UserManager(settings);
})

然后在callee模块上,您可以执行以下操作。

var config = require('./config');
config().then((userManager) => {
   ...
})