在做任何其他事情之前等待 axios 响应

Wait for axios response before doing anything else

我的 app.js 中有以下功能:

window.SGN = require('./core/core');

SGN.importPermissions();

来自自制包裹:

define('SGN',
  ['axios'],
  function (axios) {
    var SGN = {
      importPermissions: () => {
        axios
          .get(`/admin/users/permissions`)
          .then((response) => {
            window.SGN.permissions = Object.values(response.data);
          })
          .catch((error) => {
            console.log(error);
          })
          .then(() => {
          });
      }
    }
    return SGN;
  }
);

但是有时在 axios 请求完成之前,应用程序的其余部分是 运行,我怎样才能使应用程序始终在等待请求之前等待其他一切?


虽然这看起来像是一个重复的问题,但我还没有找到解决这个问题的任何答案。

应用程序的其余部分应该在异步请求完成时得到通知。为此,您应该 return 您创建的承诺:

var SGN = {
  importPermissions: () => {
    return axios
//  ^^^^^^
      .get(`/admin/users/permissions`)
      // ...etc

应用程序的其余部分应该依赖于 SGN.importPermissions() 编写的承诺 return,因此它可能是这样的:

SGN.importPermissions().then(() => {
    // Anything that depends on the request should execute here,
    // or be called from here
});