promise同步处理

async和await处理:

			// 获得文章类型
			async getType() {
				return new Promise((resolve, reject) => {
					try {
						this.request(this.api.getArticleType, {}, 'GET', 'application/json', 1).then(res => {
							this.tabs = res.rows.map(item => item.typeLabel)
							resolve(res.rows)// 此处也可不返回值,直接resolve(),前面处理后,调用处直接 await this.getType()即可
						})
					} catch (e) {
						reject(e)
					}
				})
			}
			// 他处调用,方法名前加async(因为这里需要先获得typeList,再去调用下面的请求)
			this.typeList = await this.getType()

也可使用then链处理(举个例子):

  function eat(){ 
    console.log('吃饭'); 
    return new Promise((resolve, reject) => { // 设置定时器,异步操作
      setTimeout(function(){ 
        resolve('准备睡觉'); 
      }, 1000); 
	  })
  } 

  function sleep(data){
    console.log(data + '=>' + '睡觉'); 
    return new Promise((resolve, reject) => { 
      setTimeout(function(){
        resolve('准备打豆豆'); 
      }, 1000); 
    });
  } 
  
  function hit(data){ 
    console.log(data + '=>' + '打豆豆');
    return new Promise((resolve, reject) => { 
      setTimeout(function(){ 
        resolve('结束'); 
      }, 1000); 
    }); 
  }
    // 链式调用
  eat().then(function(data){ 
    return sleep(data); // 返回一个Promise实例
  }).then(function(data){ 
    return hit(data); // 返回一个Promise实例
  }).then(function(data){
      console.log(data); 
  });

  // 链式调用简化写法
  eat()
  .then(sleep)
  .then(hit)
  .then(function(data){ 
    console.log(data); 
  });


结果1:
在这里插入图片描述

ps:.then 中指定的方法调用是异步进行的。

var promise = new Promise(function (resolve){
    console.log("inner promise"); // 1
    resolve(42);
});
promise.then(function(value){
    console.log(value); // 3
});
console.log("outer promise"); // 2

结果是 1,2,3

原因是在调用 promise.then 注册回调函数的时候 promise 对象已经是确定的状态,Promise 也会以异步的方式调用该回调函数,这是在 Promise 设计上的规定方针。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值