gpt4 book ai didi

javascript - 从 promise 中返回 Unresolved promise

转载 作者:行者123 更新时间:2023-12-02 14:49:05 24 4
gpt4 key购买 nike

find 是一个返回解析为值的 Promise 的函数,而且还具有 Promise 对象本身的数据。一个实际的用例是,find() 返回可在其他地方使用的 dbQueryObject,而 await find() 使用数据库结果进行解析。例如:

function find () {
var results = new Promise(/* resolves with databaseResults */)
Object.assign(results, new dbQueryClass)
return results
}

我可以用一个函数包装 find 来提供这样的帮助器,

function findPage (page) {
return find().skip(page*20).limit(20)
}

并像 findPage().select('_id') 一样使用它来获取查询对象或 await findPage().select('_id') 来获取解析值(返回类似于 find() 的内容)。

但是,如果我用这样的 promise 包装 find

async function findSomething() {
var someArgs = await promise1()
if (someArgs) return find(someArgs)
return find()
}

如何在 findSomething 之外获取 find() 本身的值?我需要 promise1 来解析,但我需要 find() 来不解析。 find() 是一个普通对象和一个 thenable,具体取决于您是否解析它,但解析 findSomething() 将自动解析返回值。我如何返回它以使其无法解析?

我的限制是我无法修改提供 find() 的库以不返回 thenable 对象。

最佳答案

我不明白这里“通常”是什么反模式。您可以在async函数中returnawait任何promise、thenable或plain值,就像Promise.resolve一样code> 它们或从 then 回调返回它们。这没有什么不寻常的,就是这样做的。

如果你想明确返回一个 Promise,而不是依赖 thenable 同化,你可以随时 call .exec() on your mongoose query它会给你一个“真正的” promise 。

关于javascript - 从 promise 中返回 Unresolved promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346852/

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