试图绕过Javascript Promise。我正在尝试使用Q库。我有一些代码可以输出期望的结果,但是我不确定它是如何工作的:
'require strict';
var Q = require("q");
function getFirst(){
var deferred = Q.defer();
var first = 5;
console.log("getting first: " + first);
deferred.resolve(first);
return deferred.promise;
}
function addSecond(first){
var deferred = Q.defer();
var second = 10;
console.log("adding second: " + second);
var result = first + second;
deferred.resolve(result);
return deferred.promise;
}
function printResult(result) {
console.log("result is + " + result);
}
getFirst()
.then(addSecond)
.then(printResult);
在节点中运行此我得到:
getting first: 5
adding second: 10
result is + 15
我感到困惑的是,当它们最终被调用时,addSecond和printResult如何获得它们的参数?“ 5”是如何神奇地添加到addSecond中的?如果addSecond需要一堆参数怎么办?
感谢您对此发表看法。
addSecond
从以下位置获取其参数:
deferred.resolve(first);
因此值是5
。
printResult
从以下位置获取其参数:
var result = first + second;
deferred.resolve(result);
因此值是first + second
。
您可以对此进行试验。将您想要传递给函数的值传递给.resolve()
它,并查看其变化。基本上,.resolve
它的作用就像是您传递给的函数的指针.then()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句