深圳智学无忧教育科技(单题)

题型 难易度 出现频率 浏览 评论
问答题 149 0
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题

提示:只要面试官提到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对象,可以不断的调用下去,这样就形成了链式调用。

还能输入{{limitInput-commentDet.length}}个字符