then()如何提供其参数

直流电

试图绕过Javascript Promise。我正在尝试使用Q库。我有一些代码可以输出期望的结果,但是我不确定它是如何工作的:

'require strict';

var Q = require("q");

function getFirst(){
    var deferred = Q.defer();
    var first = 5;
    console.log("getting first: " + first);
    deferred.resolve(first);
    return deferred.promise;
}

function addSecond(first){
    var deferred = Q.defer();
    var second = 10;
    console.log("adding second: " + second);
    var result = first + second;
    deferred.resolve(result);
    return deferred.promise;
}

function printResult(result) {
    console.log("result is + " + result);
}

getFirst()
.then(addSecond)
.then(printResult);

在节点中运行此我得到:

getting first: 5
adding second: 10
result is + 15

我感到困惑的是,当它们最终被调用时,addSecond和printResult如何获得它们的参数?“ 5”是如何神奇地添加到addSecond中的?如果addSecond需要一堆参数怎么办?

感谢您对此发表看法。

slebetman

addSecond 从以下位置获取其参数:

deferred.resolve(first);

因此值是5

printResult 从以下位置获取其参数:

var result = first + second;
deferred.resolve(result);

因此值是first + second


您可以对此进行试验。将您想要传递给函数的值传递给.resolve()它,并查看其变化。基本上,.resolve它的作用就像是您传递给的函数的指针.then()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章