写后端的来看Promise,晕菜了

请问下面的样例代码中,resolve,reject这俩函数的定义在哪?
newPromise(function(resolve,reject){
log('startnewPromise...');
vartimeOut=Math.random()*2;
log('settimeoutto:'+timeOut+'seconds.');
setTimeout(function(){
if(timeOut<1){
log('callresolve()...');
resolve('200OK');
}
else{
log('callreject()...');
reject('timeoutin'+timeOut+'seconds.');
}
},timeOut*1000);
}).then(function(r){
log('Done:'+r);
}).catch(function(reason){
log('Failed:'+reason);
});
函数式编程
浏览 500回答 2
2回答

慕的地10843

首先你得知道,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();//functionvarreject=this.get_reject();//functionfn(resolve,reject);}...}最后回答你的问题:resolve,reject是在Promise实例化时在构造函数中生成的。。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript