gpt4 book ai didi

javascript - 如何将参数传递给 "then"函数

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:58 26 4
gpt4 key购买 nike

我正在尝试学习使用 deferred,但由于在“then” block 中没有得到预期的参数,我被绊倒了。

var makeCall = function (err, param) {
var deferred = Q.defer();
setTimeout(function() {
console.log(1111, err, param);
deferred.resolve(err, param);
}, 1000);
return deferred.promise;
};

makeCall('test', '11').then(function(err, data) {
console.log(222, err, data);
});

控制台。 1111 输出从 Ajax 调用返回的正确数据,但 222 不正确。

http://jsfiddle.net/M2V44/

最佳答案

deferred.resolve 只能接受一个参数,即标记异步调用成功。要通知失败,您需要使用 deferred.reject。所以你的代码必须这样改

var makeCall = function(err,param){
setTimeout(function () {
console.log(1111, err, param);
var deferred = Q.defer();
if (err) {
deferred.reject(err);
} else {
deferred.resolve(param);
}
}, 1000);
return deferred.promise;
};

makeCall(undefined, '11').then(function (data) {
console.log(222, data);
}, function (err) {
console.log(333, err);
});

这将打印 222 '11',为了模拟失败情况,只需调用 makeCall 并将任何 Truthy 值作为第一个参数,例如

makeCall('11')....

它将调用失败处理程序,输出将为 333 '11'

关于javascript - 如何将参数传递给 "then"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23845965/

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