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

尽管兑现了承诺但仍未兑现承诺

叶明辉
2023-03-14
问题内容

我不明白…是我还是这是节点中的错误?

可以按预期进行:

const a = new Promise((resolve, reject) => {
  setTimeout(() => reject('timeout'), 1000);
});
a.catch(console.log);

这发出了警告:

const a = new Promise((resolve, reject) => {
  setTimeout(() => reject('timeout'), 1000);
});
a.then(console.log);
a.catch(console.log);

我懂了

timeout
(node:40463) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): timeout
(node:40463) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

问题答案:

使用.then(...)与承诺回报新希望(这就是所谓的链接)。因此,当您执行以下操作时:

a.then(console.log); // line 1 creates a new promise "b"
a.catch(console.log); // line 2 handles rejection on promise "a"

a您的最初承诺在哪里,您将在第1行上创建一个新的承诺(现在a不再存在。我们称它为 b)。因此,即使您使用.catch(...)with
a,也不会处理上的拒绝b,这解释了您在控制台上看到的消息。

为了避免出现此消息,您应该在第1行的.catch(...)新承诺中添加ab



 类似资料:
  • 问题内容: 在循环中使用/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。 这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用/ ,所以我只是想问一下这是否有问题。 问题答案: 确保代码确实有效,但是我很确定它不会执行您期望的功能。它只会触发多个异步调用,但此后函数会立即返回。 顺序阅读 如果要顺序读取文件, 则不能使用。只需使用现代循环即可,该循环将按预

  • 问题内容: 我遇到了问题,我的指令只有在我的诺言得到解决后才能呈现其内容。我以为应该这样做,但是似乎没有用。 这是我的控制器: 我的指令: 范围返回还可以,当我在开发工具中检查它时并没有定义,但是我想这是因为到我检查它时,诺言已经解决了吗? 但是,返回undefined。 问题答案: 因为您的值是异步填充的,所以您需要添加一个监视函数来更新绑定的元素。 您还可以将很多复杂性转移到指令控制器中,并使

  • 问题内容: 我陷入了我认为应该直截了当的事情。我需要从三个不同的ajax调用中获取数据,组合并处理所有三个,并将结果数组显示给用户。 以最简单的形式,我的代码如下所示: 我知道我的变量分配给了Promise,而不是实际结果,并且http请求已传递到事件队列。如果我在这些后面加上可执行语句,则这些变量将是未定义的。我不明白如何等待这些诺言解决以继续处理它们。 我想立即添加以下代码: 问题是,我不能像

  • 问题内容: 如果我有两个诺言A和B,其中只有一个诺言会成功,那么我如何才能成功实现一个诺言呢?我正在寻找与相似的东西,但只会返回实现的第一个诺言。我正在使用ES6的承诺。 问题答案: 反转承诺的极性,然后可以使用,因为它在第一个被拒绝的承诺上拒绝,它在反转后对应于第一个已实现的承诺: 这将返回第一个已兑现的诺言的值,或者如果全部被拒绝,则返回一系列拒绝原因。

  • 问题内容: 关于这两个重要来源:NZakas- 承诺链中的归还承诺 和MDN承诺,我想提出以下问题: 每次我们从承诺履行处理程序返回值时,该值如何传递给从同一处理程序返回的新承诺? 例如, 在这个例子中,是一个承诺。也是来自履行处理程序的承诺。但是。取而代之的是神奇地解决(如何?),然后将该值传递给的实现处理程序。即使是这里的句子也令人困惑。 您能给我解释一下这到底是怎么回事吗?我对这个概念感到困

  • 问题内容: 据我了解,有三种调用异步代码的方法: 活动,例如 回调,例如 承诺 我找到了节点承诺库,但是我不明白。 有人可以解释什么是诺言,为什么我要使用它? 另外,为什么将它从Node.js中删除? 问题答案: node.js中的承诺承诺会做一些工作,然后有单独的回调,将为成功和失败以及处理超时而执行。在node.js中考虑promise的另一种方式是,它们是可能仅发射两个事件的发射器:成功和错