美文网首页
js 中的Promise

js 中的Promise

作者: 施主画个猿 | 来源:发表于2018-05-15 11:31 被阅读0次

特点

1.对象的状态不受外界影响。
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。
3.无法取消Promise,一旦新建它就会立即执行,无法中途取消。
4.如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。

基本用法

ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。

下面代码创造了一个Promise实例。

const promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

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

then方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受Promise对象传出的值作为参数。

执行顺序

image.png

示例一 基本用法

console.log("开始了")
new Promise(resolve=>{
    setTimeout(()=>{
        resolve("hello");
    },2000)
}).then(value=>{
    console.log(value);
})
image.png

示例二 嵌套用法

console.log("开始了")
new Promise(resolve=>{
    setTimeout(()=>{
        resolve("1");
    },2000)
}).then(value=>{
    console.log(value);
    return new Promise(resolve=>{
        setTimeout(()=>{
            resolve("2");
        },2000)
    })
}).then(value=>{
    console.log(value);
    return 
})
image.png

相关文章

  • js-Promise基础

    js-Promise基础(第三周) Promise含义 promise意思为允诺、许诺、承诺在js中为了解决编写代...

  • ES6 promise理解

    一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • js 中的Promise

    特点 1.对象的状态不受外界影响。2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。3.无法取消Promi...

  • js中的promise

    Promise 是 JavaScript 语言提供的一种标准化的异步管理方式,它的总体思想是,需要进行的IO,等待...

  • js中的promise

  • js中的promise

    概念 promise是异步编程的一种解决方案,它是一个对象,它可以获取异步操作的信息。 有三种状态:pending...

  • OC如何实现Promise

    JS中Promise和Ramda中的curry化函数,真的很好用。我就在想: 如何在OC中实现Promise 如何...

  • js实现“锁”

    在js中需要让某些异步的任务按顺序执行的时候可以Promise.then(Promise).then..... 但...

  • 手写Promise

    基本实现new Promise 和 then /catch方法 Promise.js test.js测试 调用手...

网友评论

      本文标题:js 中的Promise

      本文链接:https://www.haomeiwen.com/subject/tdofdftx.html