function sum(a, b) {
var defer = Q.defer();
if (!a || !b) {
defer.reject('error');
} else {
defer.resolve(a + b);
}
return defer.promise;
}
function sqrt(data) {
var defer = Q.defer();
defer.resolve(Math.sqrt(data));
return defer.promise;
}
sum(8, 8)
.then(sqrt())
.then(function (result) {
console.log(result);
}, function (error) {
console.log(error);
});
我不想使用Q.fcall,我想这样做。而我在代码中的问题是,我似乎无法将参数从sqrt()
传递给.then
。因此它当前返回16(a + b的总和),而不是4。
答案 0 :(得分:3)
sum(8, 8).then(sqrt())
运行此行时,sqrt()
以零参数运行,其返回值传递给.then
。你要传递的是{em>函数本身到.then
,而不是调用它。
sum(8, 8).then(sqrt)