相关疑难解决方法(0)

什么时候.then(成功,失败)被认为是承诺的反模式?

我看了一下bluebird promise FAQ,其中提到了这.then(success, fail)是一个反模式.我不太了解它对try和catch的解释.以下是什么问题?

some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)

似乎这个例子建议以下是正确的方法.

some_promise_call()
.then(function(res) { logger.log(res) })
.catch(function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)

有什么不同?

javascript node.js promise bluebird

167
推荐指数
3
解决办法
2万
查看次数

Promise.all 中的 Promise 被多次拒绝,到底发生了什么?

Promise.all([iterable])要么全有,要么全无,这意味着当可迭代中的每个 Promise 解析时,它返回的 Promise 都会解析,或者一旦其中一个 Promise 拒绝,它就会拒绝,原因是第一个 Promise 拒绝 ( doc)。

但是如果可迭代拒绝的多个承诺会发生什么?

在 VSCode 中,我尝试了以下示例,并故意使foo()bar()承诺失败。当我在 VSCode 中调试时,我在 * catch(err => Promise.reject('error query bar()'))* 上收到错误,说发生了异常,但我不明白为什么。

我认为这是因为当我调用 Promise.reject 时,Promise.all 已经收到来自 foo 函数的拒绝,该函数也失败了,但不清楚发生了什么。

如果我在调试选项中禁用“未捕获的异常”断点,则异常将不再显示。

这里到底发生了什么?

function foo() {
  return pool.query('insert_test into test (value) values (20)')
    .then(() => client.query('insert into test (value) values (21)'))
    .catch(err => Promise.reject('error query bar()'))
}

function bar() {
  return pool.query('insert_test into test (value) values (20)')
    .then(() => client.query('insert into …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise node-pg-pool

6
推荐指数
1
解决办法
2702
查看次数

标签 统计

javascript ×2

node.js ×2

promise ×2

bluebird ×1

node-pg-pool ×1