为了账号安全,请及时绑定邮箱和手机立即绑定

写后端的来看Promise,晕菜了

写后端的来看Promise,晕菜了

函数式编程 2019-05-24 10:15:54
请问下面的样例代码中,resolve,reject这俩函数的定义在哪?newPromise(function(resolve,reject){log('startnewPromise...');vartimeOut=Math.random()*2;log('settimeoutto:'+timeOut+'seconds.');setTimeout(function(){if(timeOut
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

首先你得知道,javascript函数中的参数可以是一个函数,比如:
functiona(arg){
console.log(arg)
}
functionb(fn){
fn('a');
}
b(a);//打印a
另外,javascript中的函数不一定是定义的,可能是生成的,比如:
functiongetfn(arg){
returnfunction(){
console.log(arg);
}
}
vargeta=getfn('a');
geta();//打印a
再来看你的问题
newPromise(function(resolve,reject){
//....
})
这样理解Promise的构造函数需要传一个参数fn,这个参数类型必须是'function'构造函数会执行这个fn,并传两个参数给fn(a,b),这两个参数的类型也是'function'用代码理解大概是这个样子:
classPromise{
constructor(fn){
this.init()
varresolve=this.get_resolve();//function
varreject=this.get_reject();//function
fn(resolve,reject);
}
...
}
最后回答你的问题:resolve,reject是在Promise实例化时在构造函数中生成的。。
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 499 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信