gpt4 book ai didi

javascript - promise 问题 : ReferenceError: reject is not defined

转载 作者:行者123 更新时间:2023-11-29 10:03:02 25 4
gpt4 key购买 nike

我正在使用一些自己构建的 promise 示例来了解此功能的工作原理。

下面的代码会产生错误

ReferenceError: reject is not defined

我从 node Promise.js 开始,并使用 node 版本 8.11.3

这是我的代码,产生错误的部分被注释为“问题”

function testPromise () {

//part 1
function checkCountOnServer () {
return new Promise(function (resolve, reject) {
var available = false
if (available) {
resolve('available')
}
else {
reject('not available')
}
})
}

function checkPayment () {
return new Promise(function (resolve, reject) {
var booleanTest = true
if (booleanTest) {
resolve('payment done')
}
else {
reject('no payment received')
}
})
}

var checkCountOnServerVar = checkCountOnServer()
checkCountOnServerVar.then(function (resolve) {
console.log(resolve)
return resolve(checkPayment())
}, function (reason) {
console.log(reason) //works
reject(reason) // problem
}).then(function (value) { console.log(value) },
function (rejected) {
console.log(rejected) //problem
})

}

testPromise()

我实际上期望消息“不可用”两次。

即使我将 reject(reason) 更改为 reject('test') 我也会得到同样的错误。

请帮帮我

最佳答案

 checkCountOnServerVar.then(function (resolve) {

then 回调被调用,无论 promise 的值是什么,在你的例子中是 "payment done",这不是一个函数,所以你不能调用它。要从 then 处理程序内部链接一个 promise ,只需返回它:

checkCountOnServerVar.then(function (status) {
console.log(status);
return checkPayment();
})

此外,您的错误捕获器根本没有意义,

function (reason) {
console.log(reason) //works
reject(reason) // problem
}

因为 reject 没有定义,而且你实际上没有处理错误。如果您不处理错误,则附加处理程序没有任何意义,否则您应该返回链可以继续的值,例如:

function(error) {
console.error("Something bad happened", error);
return "An error occured, but we don't mind...";
}

总结:

checkCountOnServer()
.then(serverCount => checkPayment())
.then(payment => console.log(payment))
.catch(error => console.error(error));

关于javascript - promise 问题 : ReferenceError: reject is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51122323/

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