登录  /  注册
javascript - promise实例执行先后顺序的疑问?
伊谢尔伦
伊谢尔伦 2017-05-19 10:47:45
[JavaScript讨论组]

最近因为要做小程序, 就研究了js, 以前是做服务端的,
小程序登录那块比较复杂, 后来回调嵌套太深, 就不断学习, 后来发现了promise,
但是在做promise的时候遇到一个疑问:

我现在把登录流程封装到一个方法(loginFlow)里, 这个方法里不断的then,then,then,catch. 但是我有另一个功能是获取该用户的内容列表, 那么我应该怎么让这个动作在login后执行呢?

难道是在 loginFlow 加个 callback?
还是说在 loginFlow 外层嵌套一层 promise?
总感觉都不是很美, 难道是哪里理解的不对?
初学js和promise, 望高手指导.

下面是代码, loginFlow是封装好的登录顺序
里面的 this._login 就是封装的 wx.login, 返回了 promise
里面的 this._http 就是封装的 wx.request 返回了 promise

  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伐。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号