首页 > 解决方案 > PowerBi Embedded report.getFilters() - 将承诺转换为同步

问题描述

我的页面使用嵌入的 PowerBi,我希望能够在 javaScript 中将报告中的当前过滤器返回给服务器。

调用很简单,只需在 javaScript 中调用 report.getFilters() 即可。对我来说不幸的是,它返回了一个承诺。如何将其转换为同步呼叫?

https://docs.microsoft.com/en-us/javascript/api/powerbi/powerbi-client/report.report

标签: javascriptpromisepowerbi-embedded

解决方案


JavaScript 中有很多方法可以处理异步属性。我使用了其中一个异步/等待。它用于在 JavaScript 中编写异步代码,以使代码以同步方式运行。在函数之前使用的 async 一词意味着它总是返回一个 Promise。如果一个函数返回一个非承诺值,则异步函数像一个已解决的承诺一样返回。并且 await 仅在 async 函数内部起作用,它使 JavaScript 等待直到 promise 完成并返回结果。

代码:

async function getfilter() {

    const embedContainer = $('#embedContainer')[0];
    report = powerbi.get(embedContainer);

    // Get the filters on the report page
    const filter= await report.getFilters(); 
    console.log('The filters on the report is:', filter)
}

输出:[1]:https ://i.stack.imgur.com/K532I.png

您也可以参考 - https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/


推荐阅读