从另一个.js中应用于API的函数获取结果

时间:2018-05-09 04:21:04

标签: jquery json ajax

我想做一些像这样简单的事情(让我们假设我想要第一个元素)。函数getRooms在另一个.js

中定义
 $(document).ready(function() {
   $("#title").text(api.rooms.getRooms()[0]); //DOESNT WORK
 });

我有另一个名为 api.js 的文件,其中包含以下内容:

var api = class {
    static get baseUrl() {
    return "http://127.0.0.1:8080/api/";
  }

  static get timeout() {
    return 60 * 1000;
  }
}

api.rooms = class {
  static get url() {
    return api.baseUrl + "rooms/";
  }

  static getRooms() {
       return $.ajax({
            url: api.room.url,
            method: "GET",
            dataType: "json",
            timeout: api.timeout
             .then(function(data) {
                 data.rooms.map(item => item.name);
               })

          }); 
    }
}

如何在我的其他getRooms()文件中通过.js获取信息/数组?

1 个答案:

答案 0 :(得分:2)

它不起作用,因为在getRooms()中,使用then()函数返回一个jQuery promise(读取jQuery promises以了解为什么需要它)。基本上,由于$ .ajax调用是异步的,因此它不能简单地立即返回操作的结果。因此承诺用于实现这一目标。你的代码看起来应该是这样的:

$(document).ready(function() {
    $("#title").text(api.rooms.getRooms().done(function(data) {
        console.log(JSON.stringify(data));
    }).fail(function(jqXHR, textStatus, errorThrown) {
        console.log("Request failed: jqXHR.status=" + jqXHR.status + ", textStatus=" + textStatus + ", errorThrown=" + errorThrown);
    });
});