gpt4 book ai didi

javascript - then() 如何提供它的参数

转载 作者:行者123 更新时间:2023-11-30 16:40:28 24 4
gpt4 key购买 nike

试图让我的头脑围绕 Javascript promises。我正在试验 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);

在 Node 中运行我得到:

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

我很困惑的是addSecond和printResult在最终被调用时如何获取它们的参数? “5”是如何神奇地变成 addSecond 的?如果 addSecond 需要一大堆参数怎么办?

感谢您阐明这一点。

最佳答案

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

deferred.resolve(first);

因此值为 5

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

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

因此值为first + second


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

关于javascript - then() 如何提供它的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32087042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com