Q函数链接
Q function chaining
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,我想要这样。我在代码中的问题是我似乎无法将参数从 .then
传递给 sqrt()
。所以它目前 returns 16(a + b 的总和),而不是 4.
sum(8, 8).then(sqrt())
当此行是 运行 时,sqrt()
是 运行 且参数为零,其 return 值 传递给.then
。您要传递的是 函数 本身给 .then
,而不是调用它。
sum(8, 8).then(sqrt)
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,我想要这样。我在代码中的问题是我似乎无法将参数从 .then
传递给 sqrt()
。所以它目前 returns 16(a + b 的总和),而不是 4.
sum(8, 8).then(sqrt())
当此行是 运行 时,sqrt()
是 运行 且参数为零,其 return 值 传递给.then
。您要传递的是 函数 本身给 .then
,而不是调用它。
sum(8, 8).then(sqrt)