我一直无法理解when(
)如何传递数据。在此示例中,我需要在when()
语句中使用then()
中的id。但是,它无法解决。我听说过when()
返回延迟的一些事情,但我似乎无法理解如何使用它。
// retrieve the id of selected point from the database, and remove the
// point
var deletePointByLocation = function (lat, lng) {
$.when(function () {
var filters = [
{
'name': 'lat',
'op': 'eq',
'val': lat
},
{
'name': 'lng',
'op': 'eq',
'val': lng
}
];
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: 'api/datapoints',
data: {"q": JSON.stringify({"filters": filters})},
dataType: "json",
type: 'GET'
})
}).then(function (data) {
var idx
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: 'api/datapoints/' + idx,
type: 'DELETE'
})
}).done(function () {
var point = new google.maps.LatLng(lat, lng);
_.forEach(mapCircles, function (circle) {
if (circle.getCenter().equals(point)) {
circle.setMap(null);
var idx = mapCircles.indexOf(circle);
mapCircles.splice(idx, 1);
num--;
}
});
toggleInfoDisplays();
})
};
答案 0 :(得分:0)
idx
在undefined
处显示url: 'api/datapoints/' + idx
?
$.ajax()
或return
内$.when()
来电未被.done()
调用?
mapCircles
似乎未在.done()
定义?
尝试
var deletePointByLocation = function (lat, lng) {
// add `return` before `$.when()`
return $.when(function () {
var filters = [
{
'name': 'lat',
'op': 'eq',
'val': lat
},
{
'name': 'lng',
'op': 'eq',
'val': lng
}
];
return $.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: 'api/datapoints',
data: {"q": JSON.stringify({"filters": filters})},
dataType: "json",
type: 'GET'
})
}).then(function (data) {
var idx; // what is `idx` ?
// add `return` before `$.ajax()`
return $.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: 'api/datapoints/' + idx, // what is `idx` ?
type: 'DELETE'
})
}).done(function () {
var point = new google.maps.LatLng(lat, lng);
// what is `mapCircles` ?
_.forEach(mapCircles, function (circle) {
if (circle.getCenter().equals(point)) {
circle.setMap(null);
var idx = mapCircles.indexOf(circle);
mapCircles.splice(idx, 1);
num--;
}
});
// what is `toggleInfoDisplays` ?
toggleInfoDisplays();
})
};