如何在sapui5/openui5中等待JSONModel.loadData()请求

Ben*_*rth 7 javascript asynchronous sapui5

在sapUI5/openUI5中,我有一个JSONModel,我填充来自服务器的文件:

var oModel = new JSONModel();
oModel.loadData("http://127.0.0.1/data/config.json");
console.log(JSON.stringify(oModel.getData()));
Run Code Online (Sandbox Code Playgroud)

由于请求是异步的,控制台会记录一个空的oModel.

console.log()在加载数据后调用如何使它同步?

sch*_*del 14

建议不要使用同步ajax请求,因为它会阻止UI,并可能在控制台中产生警告.

您可以附加到Model.requestCompleted事件以访问异步加载的数据:

oModel.attachRequestCompleted(function() {
        console.log(oModel.getData());
    });
Run Code Online (Sandbox Code Playgroud)

  • 那就对了。并且您可以多次调用loadData(),因此事件也可以多次触发。如果loadData()返回一个Promise会很好。但似乎他们不喜欢Walldorf中的诺言;) (3认同)
  • @MartinBraun 从 1.64 开始,可以使用 [`dataLoaded`](/sf/answers/4472459561/)。 (2认同)