Q功能链

时间:2016-06-08 15:27:30

标签: javascript function q

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。

1 个答案:

答案 0 :(得分:3)

sum(8, 8).then(sqrt())

运行此行时,sqrt()以零参数运行,其返回值传递给.then。你要传递的是{em>函数本身到.then,而不是调用它。

sum(8, 8).then(sqrt)