JavaScript/Node.JS在另一个承诺中返回承诺无效
我对那些承诺有些困惑,不明白为什么我不能把一个承诺变成另一个承诺。我的问题如下,我有一个函数save:JavaScript/Node.JS在另一个承诺中返回承诺无效,javascript,node.js,callback,promise,Javascript,Node.js,Callback,Promise,我对那些承诺有些困惑,不明白为什么我不能把一个承诺变成另一个承诺。我的问题如下,我有一个函数save: save(Driver) { this.exists(Driver).then(exist => { if(exist) { return new Promise(function (resolve, reject) { if (exist === true) { re
save(Driver) {
this.exists(Driver).then(exist => {
if(exist) {
return new Promise(function (resolve, reject) {
if (exist === true) {
resolve(true);
} else if (exist === false) {
resolve(false);
} else {
reject(err);
}
});
}
});
};
很简单,当我尝试调用该函数时,如下所示:
save(driver).then(this.common.saveSuccess(res))
.catch(this.common.noSuccess(res));
我得到一个错误,说无法读取未定义的的属性'then',我无法理解为什么,因为我返回了一个承诺。
感谢您的帮助您的保存功能非常复杂。此处不需要嵌套承诺,只需从this.exists
函数返回结果(承诺):
save(Driver) {
return this.exists(Driver);
};
此外,您还未正确使用此功能<代码>保存
函数可以使用真
或假
值进行解析,因此您需要在中验证此值,然后
回调,并使用捕获
回调查找可能的错误:
save(driver)
.then(exists => {
if (exists) {
this.common.saveSuccess(res);
} else {
this.common.noSuccess(res)
}
})
.catch(err => // process error here);
您没有从save()
返回任何内容<代码>返回this.exists(Driver)。然后(…
还有,result
的定义在哪里?是的,很抱歉我试图简化代码,忘记了更改文本,我修复了,请在问题中也修复它。你的意思是this.exists(Driver)中的返回。然后(…
不是函数的返回?否。exist=>{…}
是另一个简写函数(“箭头函数”)。