繁体   English   中英

Javascript 在数据更新后立即运行 function?

[英]Javascript run function as soon as data updates?

因此,当我的 web 应用程序打开时,组件 A 会发出 api 调用结果,并将结果存储在某个地方。 还有另一个 javascript 组件 B 需要该变量的值。 B 如何在数据更新后立即访问变量。 目前,我不得不求助于在 B 中添加 setInterval function 以不断监听变量值的变化,但我希望有更好的解决方案。 承诺会在某种程度上有所帮助吗? 任何帮助,将不胜感激。 注意:组件 A 和组件 B 未连接。 组件 A 无法调用组件 B 的方法/数据,因此不得不将数据保存在第三个位置。

您可以让 B 调用 A 方法并等待它结束。

await A()

async function A(){
// ...things
    return data
}

您还可以使用事件,方法是 B 将回调 function 传递给 A,在完成后注册并调用它。

let callback = null

function AReady(cb){ callback =  cb } 

async function A(){
// ...things
     if(callback) callback(data)
}

如果他们根本没有任何联系,您将需要建立一个。 如果它们是模块,您可以导出AReady 如果它们在 window 上,则需要设置window.AReady = AReady ,使用方法(另外,B 需要在 A 之后加载,或者等待document.ready

某种全球通知系统会起作用。 您可以使用流行的第三方包,例如pubsub-js ,但您也可以自己实现一个简单的版本。

这是它如何工作的示例:

// Inside component B

// at startup
PubSub.subscribe('data from A', function(_, data) {
  // do stuff with data
});
// Inside component A

// load data, then
Pubsub.publish('data from A', data);

是的,promise 可以提供帮助,只需在两个组件中使用 async/await 即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM