Javascript Q函数链
我不想用Q.fcall,我想这样。我在代码中的问题是,我似乎无法从Javascript Q函数链,javascript,function,q,Javascript,Function,Q,我不想用Q.fcall,我想这样。我在代码中的问题是,我似乎无法从向sqrt()传递参数。所以它现在返回16(a+b之和),而不是4 function sum(a, b) { var defer = Q.defer(); if (!a || !b) { defer.reject('error'); } else { defer.resolve(a + b); } return defer.promise; } functio
向sqrt()
传递参数。所以它现在返回16(a+b之和),而不是4
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);
});
运行此行时,sqrt()
以零参数运行,其返回值传递给。然后
。您要传递的是函数本身到。然后
,而不是调用它
sum(8, 8).then(sqrt())
当您有foo(bar())
时,首先执行bar
,并将其返回值传递给foo
。这就是JavaScript的工作方式,行为是相同的,不管foo
期望什么样的值。
sum(8, 8).then(sqrt)