gpt4 book ai didi

javascript - Bluebird 的 Promise 解析返回未定义

转载 作者:行者123 更新时间:2023-12-03 01:24:38 25 4
gpt4 key购买 nike

我是 Promise 新手,所以我正在尝试 Bluebird 的 Promise API。我有以下方法返回 Promise.try()

CheckDb - Promise 方法

const Prom = require("bluebird")

..........
..........

let checkDb = () => {
return Prom.try(() => {
SomePromiseMethod().then(result => {
if (//some condition) {
let resp = {
res: result,
somethingelse : somethingelse
}
return Prom.resolve(resp)
}
else
return Prom.reject(new Error("some reason"));
}, err => {
return Prom.reject(err);
})
.catch(err => {
return Prom.reject(err);
});
});
}

SomeTask - 调用 Promise 方法的方法

exports.someTask = () => {
checkDb().then(resolved => {
console.log(resolved) // coming undefined
},
rejected => {
console.error(rejected);
})
.catch(err => {console.error(err)});
}

这里的问题是 Promise 函数的 then 方法的 resolved 组件返回未定义。

我调查了thisthis ,但无法弄清楚。

最佳答案

尝试不使用此 Prom.resolve 直接返回值,如下所示:

...
return SomePromiseMethod().then(result => {
if (//some condition) {
let resp = {
res: result,
somethingelse : somethingelse
}
return resp
}
else
throw new Error("some reason"));
}
...

如果您处于 Promise 的“then”方法中,则可以通过返回一个值来解决它,该值将传递到链中的下一个“then”方法。

如果您有以下情况,您将显式使用解析方法:

  • “手动”创建了延迟,并且您想要解决它
  • 如果您想要“ promise ”非 promise 的内容,则由您创建的 promise ,如下例所示:

    返回新的 Promise(函数(解决, 拒绝) { ... 解析(值);

    })

这不是你的情况。(编辑这部分答案以避免误解)

关于javascript - Bluebird 的 Promise 解析返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51603252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com