深圳智学无忧教育科技(单题)
题型 | 难易度 | 出现频率 | 浏览 | 评论 |
---|---|---|---|---|
问答题 | 149 | 0 |
问答题
- Promise了解过吗?追问:链式调用的原理的原理是什么?
提示:只要面试官提到Promise这个关键字,就按照下面回答!问的方式不一样,但实际上是同一个意思。比如:
1.你了解过Promise吗?
2.你是怎么理解Promise的?
3.Promise是干什么用的?
等等,都可以按照项目的方式去回答:
答:
Promise是ES6提供的一种异步编程方案。使用new和它的构造函数创建Promise对象,构造函数传一个处理函数,有两个参数,为resolve 和 reject 两个函数。
通过new Promise(function (resolve, reject) {
}
)
resolve函数是异步成功返回的结果,reject是异步失败返回的结果。成功的结果使用then来处理,错误的结果使用catch来处理。
Promise的优点就是可以链式调用,这样就可以用同步的编程方式处理异步的结果,异步获取数据和业务处理分开。提示:为了便于理解,你需要看看下面这段代码,面试的时候可以不用说这段代码。
// 第一部分 异步获取数据阶段
var getUserName = function(){
return new Promise(function(resolve,reject){
$.get('xxx.com/getUserName',function(data){
resolve(data);
});
};
var getMobile = function(userName){
return new Promise(function(resolve,reject){
$.get('xxx.com/getUserMobile?user='+userName,function(data){
resolve(data);
});
});
}
// 第二部分 业务逻辑部分,以同步编程的方式处理异步结果。
getUserName().then(function(userName){
//这里可以处理第一个异步返回的结果
return getMobile(userName);
}).then(function(mobile){
//这里可以处理第二个异步返回的结果
});
有了Promise后,可以按照顺序来处理异步执行的结果变得更加的方便。提示:这句总结性的话必须说出来,表示个人的理解。
追问:链式调用的原理是什么?
答:then和catch函数都会返回一个新的Promise对象,可以不断的调用下去,这样就形成了链式调用。