javascript - 尝试在SAPUI5中实现oData的异步读取调用

标签 javascript sapui5

我正在尝试实现SAPUI5中读取odata的异步函数调用。

这是一个例子:

    this.odataModel = new sap.ui.model.odata.ODataModel(oDataUrl, true, 'user', 'pwd');
   /* data retrieving time 5sec */
    function read1(){
      this.odataModel.read('entity-url1',null, null, true, function(data){
       console.log('success');
        return data;
      },
      function(){ console.log('error'); });
    }
       /* data retrieving time 10sec */
    function read2(){
      this.odataModel.read('entity-url2',null, null, true, function(data){
       console.log('success');
       return data;
      },
      function(){ console.log('error'); });
    }

   /* data retrieving time 10sec */
    function read3(){
      this.odataModel.read('entity-ur3',null, null, true, function(data){
       console.log('success');
       return data;
      },
      function(){ console.log('error'); });
    }
/* function calls */
 var d1 = read1(); 
 var d2 = read2();
 var d3 = read3();

在这次调用之后,我试图从 read3 函数获取数据,但我得到的是空数据。由于执行时间。

我怎样才能等到执行完成。

最佳答案

您将看不到任何数据,因为您的请求是异步执行的!如果您想处理数据,则必须在模型读取方法的成功回调中执行此操作。但即使使用同步调用,您也不会看到数据,因为您的方法 read1、read2、read3 不会返回数据。

关于javascript - 尝试在SAPUI5中实现oData的异步读取调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159637/

相关文章:

javascript - 怎么理解这个Promise执行顺序呢?

javascript - 如何对 DOM 上由 setter 组成的函数进行单元测试?

sapui5 - 如何更快地加载 sap.ui.comp.smarttable.SmartTable?

Javascript 替换 innerhtml

url-routing - SAPUI5 中的路由 : How to implement passing of URL? 模型数据未初始加载

SAPUI5:如何过滤具有 2 个或更多值的数据

event-handling - SAPUI5:如何在 ODataModel 更改的情况下获取事件通知?

javascript - 将 CSS .class 作为参数传递给 javascript 函数

javascript - 使用 requirejs 优化时排除 .svn 文件夹

javascript - 使用 jQuery CSS 设置一个 div 与另一个 div 具有相同的高度