Promise异步操作

9 篇文章 0 订阅

看了不下10篇博客来理解promise,终于有了一些理解。
理解之后发现大家说得都对,只是理解起来有一些地方难度较大。
首先promise是异步编程的一种解决方案,里面存放着未来才会发生的事情的结果。为什么说它存放着未来才会结束的事情的结果呐?我们先来构造一个promise实例看一下。

let promise = new Promise(function(resolve,rejeact){
  console.log('Promise');
  resolve();
});

promise.then(function(){
  console.log('Resolved');
});

console.log('Hi');

// Promise
// Hi
// Resolved

这行代码说明了我们在生成promise实例的时候,promise里的函数就立即执行了,也就是说我们想要的结果已经被执行完了,他已经在promise实例里面了。

我们为什么用promise,因为我们不想立即就用到这个结果,我们需要让他先执行着,我们什么时候想要什么时候直接就可以拿出来,这样就不会造成单线程阻塞。

那我们想要拿到我们的结果的时候,就要用到了reslove,reject函数,这两个函数是什么那。首先我们要明确的是:

1、promise构造函数接收一个函数作为参数

2、参数函数又有两个参数,一个是成功调用的函数:reslove,一个是失败调用的函数:reject。对于这两个函数我的理解是,他们只是传递数据的工具,并不会执行其他的功能,他们的任务就是将我们想要拿到的已经在Promise实例里的结果传递出去。

var promise = new Promise(function(resolve,reject){
  // ... some code
  if(/* 异步操作成功 (判断条件)*/){
    resolve(value);
  }else{
    reject(error);
  }
});

那么传到哪里那?

Promise提供了比较正规的API:

因为我们之前构造了Promise实例,实例的原型上有then方法,我们可以在实例生成后分别制定Resolved状态和Rejected状态的回调函数,这个大家应该都了解了,是promise三种状态中的两个状态,一个是成功,一个是失败。

promise.then(function(value){
  // sucess
},function(error){
  // failure
});

.then方法提供两个函数作为参数,分别是成功的处理函数、失败的处理函数。第二个参数可以不写。

对于图片加载,ajax的例子遍地都是,可以看一下加深理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值