我对那些承诺事情有点困惑,无法理解为什么我不能将承诺归还给另一个承诺。我的问题如下,我有一个功能保存:
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));
我收到一条错误,说Cannot read property 'then' of undefined
,我无法理解为什么我要回信。
感谢您的帮助
答案 0 :(得分:1)
您的save
功能非常复杂。您不需要嵌套承诺,只需从this.exists
函数返回结果(承诺):
save(Driver) {
return this.exists(Driver);
};
此外,您错误地使用此功能。可以使用save
或true
值解析false
函数,因此您需要在then
回调中验证此值,并使用catch
回调查找可能的错误:< / p>
save(driver)
.then(exists => {
if (exists) {
this.common.saveSuccess(res);
} else {
this.common.noSuccess(res)
}
})
.catch(err => // process error here);