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._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("登录出错");
});
},
then 方法接受两个参数,你可以把最后的错误处理放在一起,然后返回promise实例