我想做一些像这样简单的事情(让我们假设我想要第一个元素)。函数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
获取信息/数组?
答案 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);
});
});