假设我有以下代码。
function divide(numerator, denominator) {
return new Promise((resolve, reject) => {
if(denominator === 0){
reject("Cannot divide by 0");
return; //superfluous?
}
resolve(numerator / denominator);
});
}
如果我的目标是使用拒绝
提前退出,那么我是否也应该养成之后立即返回ing的习惯?
如果您在解决/拒绝后没有“返回”,那么在您打算让它停止后,可能会发生不好的事情(如页面重定向)。资料来源:我遇到了这个。
一个常见的习惯用法是将返回
与拒绝
结合起来,同时拒绝promise并退出函数,这样包括解析
在内的其余函数就不会执行。如果您喜欢这种风格,它可以使您的代码更加紧凑。
function divide(numerator, denominator) {
return new Promise((resolve, reject) => {
if (denominator === 0) return reject("Cannot divide by 0");
^^^^^^^^^^^^^^
resolve(numerator / denominator);
});
}
这工作正常,因为Promise构造函数对任何返回值都不做任何操作,并且在任何情况下解决
和拒绝
都不返回任何值。
同样的习惯用法也可以用于另一个答案中所示的回调样式:
function divide(nom, denom, cb){
if(denom === 0) return cb(Error("Cannot divide by zero"));
^^^^^^^^^
cb(null, nom / denom);
}
同样,这很好,因为调用divide的人不希望它返回任何东西,也不使用返回值做任何事情。
返回
的目的是在拒绝后终止函数的执行,并防止在拒绝后执行代码。
function divide(numerator, denominator) {
return new Promise((resolve, reject) => {
if (denominator === 0) {
reject("Cannot divide by 0");
return; // The function execution ends here
}
resolve(numerator / denominator);
});
}
在这种情况下,它阻止了解析(分子/分母);
的执行,这不是严格需要的。然而,最好还是终止执行,以防止将来可能出现的陷阱。此外,防止不必要地运行代码是一个很好的实践。
出身背景
promise可以处于以下三种状态之一:
当一个promise被履行或拒绝时,它将无限期地保持这种状态(已解决)。因此,拒绝履行promise或履行被拒绝的promise将无效。
这个示例片段显示,虽然promise在被拒绝后实现了,但它仍然被拒绝。
function divide(numerator, denominator) {
return new Promise((resolve, reject) => {
if (denominator === 0) {
reject("Cannot divide by 0");
}
resolve(numerator / denominator);
});
}
divide(5,0)
.then((result) => console.log('result: ', result))
.catch((error) => console.log('error: ', error));
问题内容: 假设我有以下代码。 如果我的目的是要早退,那么我是否也应该养成事后立即饮食的习惯? 问题答案: 的目的是拒绝后终止函数的执行,防止代码执行后它。 在这种情况下,它会阻止执行,这不是严格需要的。但是,仍然最好终止执行以防止将来可能出现陷阱。另外,防止不必要地运行代码是一个好习惯。 背景 一个承诺可以处于以下三种状态之一: 待定-初始状态。从待定状态可以移至其他状态之一 完成-成功运作 拒
所以我想知道promise的回应和拒绝对象是怎么回事。我正在阅读这份文档,有些事情我还不清楚。 例如,对象是关于什么的。 我已经看到这个东西可以包含在一个字符串中,然后启动?发生了什么事?这有什么意义 我最初认为只要回调函数返回一个值,解析函数/对象就会启动,然后它就可以转到 所以我在这件事上玩了一段时间,结果证明,我的理论中有50%的时间是有效的,另外50%的时间让我崩溃。 还有拒绝对象/函数,
我在想什么时候我该拒绝一个promise。我发现了几个关于这个话题的问题,但找不到合适的答案。我什么时候应该拒绝promise? 本文http://howtonode.org/6666a4b74d7434144cff717c828be2c3953d46e7/promises 说: 解析:一个成功的promise是“已解析”的,它调用正在等待的成功侦听器,并记住为附加的未来成功侦听器解析的值。分辨率
答案:这个线程的顶部答案基本上回答了我的问题:在一个非void方法编译中缺少return语句。 我想知道为什么不需要在这个方法中返回一个值? 我觉得这样不应该编译。然而,它编译得很好。这在哪里被定义为合法? 在这种情况下,将方法更改为:
最近,我们突然看到以下几个堆栈跟踪。为什么会这样?这是从应用程序尝试将音频评论服务移动到前台时开始的,包括媒体通知和所有内容。
问题内容: 考虑一下这个功能: 有人可以解释一下为什么L1和L2显然无法到达时没有给出警告,而L3却给出了警告。 问题答案: 因为就编译器而言,这只是另一个方法调用。 它所做的是结束过程这一事实只能从实现中找到(这是本机代码,而没有任何区别)。 如果你必须把你的代码(通常也最好避免它,除非你想返回0以外的代码),它应该是一个方法,返回,例如。这样更好。 关于可达性,解释是相同的:是Java语言的关