聊一聊es6中的promise

Promise

promise就是为了解决多层的函数、方法的嵌套调用而存在的
简单粗暴地理解就是:它就是把一层一层向内嵌套调用的方法给拉成一串连续调用的方法。每个嵌套调用的方法,都向调用者返回this,也就是返回自身,然后带着上一次调用的结果进入下一次嵌套调用的环节。

伪代码:

// 普通的js嵌套函数
function foo() {
	function aa() {
		function bb() {
			function cc() {
				 // ...一层一层不断向下嵌套
			 }
		 }
	 }
}


// promise 的实现思路
var abc = new 一个东西
abc.foo()
// abc先调用了foo foo方法执行之后带着执行的结果,返回this

abc.aa()
// abc再调用aa aa方法执行之后带着执行的结果,返回this

abc.cc()
// abc带着上一次运行的结果,接着再调用cc()

// promise连续调用自己上一轮的运行结果 用的是 .then()方法
abc.then().then().then()   //不断向下

在es6中,Promise正式成为了JS原生的内容

promise的含义:

它就是用来操作一个异步操作的结果的方法。

new Promise(
    /* 执行的JS, 这其实是一个回调函数*/
    function(resolve, reject) {
        if (/* success */) {
            // ...执行代码
            resolve();
        } else { /* fail */
            // ...执行代码
            reject();
        }
    }
);

对于Promise对象来说,它也有三种状态:
1、pending
初始状态,也称为未定状态,就是初始化Promise时,调用executor执行器函数后的状态。
2、fulfilled
完成状态,意味着异步操作成功。
3、rejected
失败状态,意味着异步操作失败。

状态转化是单向的,不可逆转,已经确定的状态无法转回初始状态

promise实例生成以后,可以用then方法分别指定 resolved 状态和 rejected 状态的回调函数。

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

// then 方法可以接受两个回调函数作为参数。
//第一个回调函数是 promise对象的状态变为resolved时调用,
//第二个回调函数是Promise对象的状态变为rejected时调用。

promise新建后就会立即执行。

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

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

console.log('Hi!');

// Promise
// Hi!
// resolved

Promise 新建后立即执行,所以首先输出的是Promise;然后,then 方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值