gpt4 book ai didi

javascript - 等待 javascript promise 完成(当我没有其他选择时......)

转载 作者:行者123 更新时间:2023-11-29 19:00:18 24 4
gpt4 key购买 nike

在你们开始对重构和回调大喊大叫之前,请先完整阅读问题:)

我在javascript中遇到以下情况(为了方便起见,简化了代码):

    function myFunc(){
var myItems = getItemsAsync(); //this returns a promise

return {
settings: {
type: "items",
component: "accordion",
items: myItems //WRONG! This is a promise, not the data itself!
}
}
}

情况如下:我有一个外部框架,它调用 myFunc 并期望返回的对象 {settings: etc...} 已填充所有值,包括 items 子对象。我无法控制此框架如何调用 myFunc,因此我无法更改它以接受 promise 或部分结果,当 myFunc 返回时,返回的对象必须“准备好”。

现在,如您所见,问题在于:要获取 items,我需要调用一个设计为异步的 API,并返回一个 Promise。不幸的是,这个 API 也是我无法控制的,所以我无法修改它以使其同步工作。

所以基本上我陷入了僵局:我必须同步返回一个完整的对象,但该对象的其中一个片段只能异步获取!!

有办法解决这个问题吗?我在这里看到的所有类似问题都表明等待 promise 完成是不可能的......这是真的吗?

我知道你们都想说:“更改调用者或 API”,但不幸的是,它们都是完全超出我控制范围的组件,因为它们是我无法修改的现有系统的一部分(由于官僚主义而非技术原因)

有什么办法可以摆脱这个困境吗?

最佳答案

好吧,幸运的是,我发现我在问题中提到的框架(调用 myFunc 的框架)有一个初始化阶段,我可以在其中注入(inject)任意数量的 promise ,并且框架将等待它们完成,然后再继续并调用其他内容,包括 myFunc,因此我能够在此初始化阶段构建我的items 对象,之后它是准备使用。

这解决了我的问题,但它没有回答我原来的问题。我仍会等待几天,看看是否有人知道解决方法,但从我同时读到的内容来看,我想要的似乎无法完成。

关于javascript - 等待 javascript promise 完成(当我没有其他选择时......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283403/

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