对于Promise的简单理解 ?

promise 的用途

首先要了解promise是什么,有什么用,为啥要用它?

是什么?

当谈到Promise的时候,你肯定顺便听到回调、异步、这样的玩意。其实说得通俗一点,Promise就是一种写代码的方式,并且是用来写javascript编程中的异步代码的。

基本用法

一句话:

return new Promise((resolve,reject)=>{})

那么Promise有什么用,为啥要用呢?

先从简单的回调说起

get((data) => {
})

就像这样子,就是处理异步任务的回调函数。

如果多起来了,那就是:

get1(data1 => {
    get2(data1, data2 => {
       get3(data2, data3 => {
          get4(data3, data4 => { 
             get5(data4, data5 => { 
             }) 
          }) 
       }) 
    }) 
})


我们不得不提到回调地狱了:)

回调地狱

就如上面的代码,如果想要更改执行顺序,很麻烦,读代码的时候跳来跳去,让人头大。(这种还算少了)

如果用Promise来写的话:

// 先把get都转成返回Promise对象的函数
// 然后

get1()
.then(get2)
.then(get3)
.then(get4)
.then(get5)
.then(data => {
})

舒服了

由此也可以引出 .then 的用法

then()方法返回一个Promise。它最多需要有两个参数:Promise 的成功和失败情况的回调函数。

语法:

p.then(onFulfilled[, onRejected]);

p.then(value => {
  // fulfillment
}, reason => {
  // rejection
});

如何使用 Promise.all

Promise.all(iterable)方法返回一个Promise实例,此实例在 iterable 参数内所有的promise 都“完成(resolved)”或参数中不包含promise时回调完成(resolve);如果参数中 promise有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败promise的结果。

语法:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});

如何使用 Promise.race

Promise.race(iterable)方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。

语法:

const promise1 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then(function(value) {
  console.log(value);

 

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:共享博客 » 对于Promise的简单理解 ?

分享到: 更多 (0)
avatar

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活