前言:
此刻你们对“这js”都比较重视,各位老铁们都需要知道一些“这js”的相关内容。那么小编也在网上搜集了一些关于“这js””的相关知识,希望小伙伴们能喜欢,兄弟们快快来学习一下吧!Javascript 是解释性脚本语言,语法会逐行执行,这就意味着遇到耗时的请求,只能卡在那里直到返回,这时候JS的异步机制来了。
Promise 解释
从关键字的意义可见,Promise--承诺,所以无论成功与否,都会给你一个答复。
看看定义:
let promise = new Promise(function(resolve, reject) { // executor(生产者代码)});
这里面包括了 “生产者”、“消费者“和“Promise”,Promise负责把生产者和消费者连接起来。
定义
Promise的参数函数 function(resolve,reject){} 就是 执行器executor,new后executor会自动执行,像极了构造函数,当executor成功后会自动回调 resolve,失败了会自动回调 reject,就这么简单。
整个过程中,状态流转如下(状态属于内部属性,代码中无法使用):
在一个 executor 中,只能调用一次 reject 或者 resolve,存在多次调用时,后面的会被忽略。
调用 reject 时,建议使用对象 Error ,这样会更明显看出来是发生了错误
在消费者调用时,如何接收 executor 返回呢?
接收返回(成功/失败)
let promise = new Promise(function(resolve, reject) { // executor(生产者代码)});promise.then( function(sucess){}, // 接收成功返回的消息 function(error){} // 接收错误返回的消息)
可见,
如果消费者只对成功返回感兴趣,可以只定义第一个函数;
如果消费者只对失败返回感兴趣,可以把第一个函数定义成 null,或者采用以下方式:
// 第一种方式promise.then( null, // 接收成功返回的消息 function(error){} // 接收错误返回的消息);// 第二种方式promise.catch(function(error){})
还有一种情况,我们对返回都不感兴趣,只要执行完就执行一段代码,还可以使用 finally,如下:
// finally 没有参数,这个要切记,所以是否成功在 finally 内并不知道promise.finally(function(){})链式
还支持链式调用,如下:
promise.then( function(sucess){}, // 接收成功返回的消息 function(error){} // 接收错误返回的消息).then( function(sucess){}, function(error){}).then( function(sucess){}, function(error){})
最后
Promise在现在前端代码中,还是比较常见的,希望多应用。
标签: #这js