当前位置: 首页 > 面试题库 >

如果我多次拒绝/解决Kriskowal q中的问题,会发生什么?

罗毅
2023-03-14
问题内容

我正在研究Promise模式,并将kriskowal的q用于node.js,

有以下代码段:

var deferred = Q.defer();
try {
    messageData = JSON.parse(message);
} catch (e) {
    global.logger.warn('Error parsing JSON message.');
    deferred.reject(e);
}
...
if (some_reason)
    deferred.resolve(something);
...
return deferred.promise;

如果解析器都失败并且 some_reason 为true怎么办?

执行是否会从拒绝通过解析开始,并且两个promise的方法都会在不同的时间调用,从而产生错误?

我应该避免多次调用拒绝/解决吗?


问题答案:

由于promise只能解析一次(履行
拒绝),因此第一个解决方案获胜,任何进一步的调用都将被忽略。从文档:

在所有诺言得到解决(即履行或拒绝)的情况下,解决方案都是永久性的,无法重置。尝试呼叫解决,拒绝或通知诺言已经解决的操作将是无济于事的。

我应该避免多次调用拒绝/解决吗?

您甚至可以设计应用程序,让两个方法相互“竞争”以解决延迟问题,但是通常应避免这样做,以减少读者的困惑。



 类似资料:
  • 当我运行:时,存在这样的错误: 有人可以帮助我吗?

  • 正在启动lib\main。在调试模式下为x86构建的Android SDK上的dart。。。正在运行Gradle任务“assembleDebug”。。。 失败:生成失败,出现异常。 错误:任务“:app:compileFlutterBuildDebug”的执行失败 JAVAlang.NullPointerException(无错误消息) > 尝试:使用--stacktrace选项运行以获取堆栈跟踪

  • 所以我想知道promise的回应和拒绝对象是怎么回事。我正在阅读这份文档,有些事情我还不清楚。 例如,对象是关于什么的。 我已经看到这个东西可以包含在一个字符串中,然后启动?发生了什么事?这有什么意义 我最初认为只要回调函数返回一个值,解析函数/对象就会启动,然后它就可以转到 所以我在这件事上玩了一段时间,结果证明,我的理论中有50%的时间是有效的,另外50%的时间让我崩溃。 还有拒绝对象/函数,

  • 问题内容: 在具有并发访问的程序中使用映射时,是否需要在函数中使用互斥体来 读取 值? 问题答案: 读者众多,没有作家可以: https://groups.google.com/d/msg/golang- nuts/HpLWnGTp-n8/hyUYmnWJqiQJ 一个作家,没有读者是可以的。(否则,地图不会太好。) 否则,如果至少有一个作家,而作家或读者至少还有一个,那么 所有 读者 和 作家都

  • 本文向大家介绍js onmousewheel事件多次触发问题解决方法,包括了js onmousewheel事件多次触发问题解决方法的使用技巧和注意事项,需要的朋友参考一下 我想做一个首屏和第二屏之间滚动鼠标滚轮就可以整平切换的效果,遇到了很多问题,后来在kk的帮助下,终于解决了这个问题,甚是欢喜,于是记录一下: 我最初的代码是这样的: 这样的代码我在IE和火狐下测试都是正常的,但是在谷歌下onmo