gpt4 book ai didi

javascript - Promise 不等待超时

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

我正在学习 Promise 库,但遇到以下问题。

//Function for getting sum
function getSum(n1, n2) {
var isAnyNegative = function() {
return n1 < 0 || n2 < 0;
}
var promise = new Promise(function(resolve, reject) {
if (isAnyNegative()) {
reject(Error("Negatives not supported"));
}
resolve(n1 + n2)
});
return promise;
}

////Function for getting Difference
function getDiff(n1,n2){
var diff = n1-n2;
setTimeout(function(){
console.log("value of diff--- ", diff)
return diff;
}, 2000)
}

getSum(5,6)
.then(function(callbackResult){
console.log("first callback-Result- ", callbackResult)
return getDiff(14,11);
}, function(error){
//handling error
})
.then(function(callbackResult){
console.log("second callback--Result- ", callbackResult)
return getSum(22,22);
},
function(error){
//handling error
})
.then(function(callbackResult){
console.log("third callback--Result- ", callbackResult)
}, function(error){
//handling error
})

此代码片段的输出:-

first callback-Result-  11
second callback--Result- undefined
third callback--Result- 44
value of diff--- 3

为什么第二个回调不等待差异函数返回。我认为这是同步代码的 Promise 库的主要功能。

最佳答案

您必须以异步方式处理setTimeout。例如:

function getDiff(n1,n2){
return new Promise((resolve) => {
const diff = n1 - n2;

setTimeout(() => {
console.log('value of diff--- ', diff);

return resolve(diff);
}, 2000);
}
});

关于javascript - Promise 不等待超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404912/

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