javascript - Fragen zur Reihenfolge, in der Promise-Instanzen ausgeführt werden?
伊谢尔伦
伊谢尔伦 2017-05-19 10:47:45
0
1
891

Da ich kürzlich ein kleines Programm erstellen wollte, habe ich auf der Serverseite gearbeitet.
Der Anmeldeteil des kleinen Programms war zu tief verschachtelt, also habe ich weiter gelernt . Später entdeckte ich Versprechen,
aber ich arbeite an Versprechen:

Ich kapsele den Anmeldevorgang jetzt in eine Methode (loginFlow), die dann kontinuierlich abfängt. Aber ich habe eine andere Funktion, um die Inhaltsliste des Benutzers abzurufen. Wie soll ich diese Aktion ausführen? Was ist mit der Ausführung nach der Anmeldung? ?

Soll ich einen Rückruf zu loginFlow hinzufügen?
Oder sollte ich eine Versprechensebene außerhalb von loginFlow verschachteln? Experten können mich beraten.

Das Folgende ist der Code, loginFlow ist die gekapselte Anmeldesequenz

this._login darin ist das gekapselte wx.login, das ein Versprechen zurückgibt

this._http im Inneren ist das gekapselte wx.request und gibt das Versprechen zurück

  loginFlow: function() {
    var that = this;

    this._login({}).then(function(res) {
      // 用 code 去获取 session
      let options = {
        url: that.globalData.apiDomain + '/mina/session',
        method: 'GET',
        data: {
          code: res.code
        }
      }
      return that._http(options);

    }).then(function(res) {
      // 把 session 放入 storage, 并且获取用户信息
      wx.setStorageSync('session', res.data.session);
      return this._getUserInfo({});

    }).then(function(resUser) {
      // 把用户信息上传
      let options = {
        url: that.globalData.apiDomain + '/mina/user/info',
        method: 'POST',
        data: resUser
      };
      return that._http(options);

    }).then(function(res) {
      // 上传信息结果成功
      if (res.statusCode == 200) {
          // 把用户信息保存到本地
          
      } else {
        // 程序逻辑返回了失败, 提示?
        return Promise.reject(new Error("程序逻辑错误, 保存用户信息失败"));
      }
      
    }).catch(function(err) {
      // 登录出错
      that._alert("登录出错");
    });
  },
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(1)
刘奇

then 方法接受两个参数,你可以把最后的错误处理放在一起,然后返回promise实例

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage