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 (сумму а + Ь), вместо 4.Функциональная цепочка Q
Если у вас есть 'foo (bar())', 'bar' выполняется первым, а его возвращаемое значение передается' foo'. Так работает JavaScript, и это поведение одинаково, неважно, какое значение ожидает 'foo'. –