我无法从此延期中访问返回的拒绝。我想这可能是因为这个函数是嵌套的,我必须在其他地方放置一个返回拒绝。请指教。谢谢。
我期待在这里使用拒绝值:
$.search(boxes).then(function(results) {
console.log(results, "place_results length: ", public.place_results.length);
// public.showPlaces();
}), function(error) {
console.log("failed search");
console.log(error);
};
$.search = function (boxes) {
function findNextPlaces(place_results, searchIndex) {
var dfd = $.Deferred();
if (searchIndex < boxes.length) {
// service.nearbySearch({
service.radarSearch({
bounds: boxes[searchIndex],
// types: ["food"]
keyword: ["coffee"],
// rankBy: google.maps.places.RankBy.DISTANCE
}, function (results, status) {
if (status != google.maps.places.PlacesServiceStatus.OK && status === 'OVER_QUERY_LIMIT') {
failed_Queries.push(boxes[searchIndex]);
console.log("failed!: boxes:",searchIndex, failed_Queries);
// dfd.reject("Request["+searchIndex+"] failed: "+status);
return dfd.reject("failed").promise();
}
if (status != 'OVER_QUERY_LIMIT'){
console.log(status);
console.log( "bounds["+searchIndex+"] returns "+results.length+" results" );
for (var i = 0, result; result = results[i]; i++) {
var marker = createMarker(result);
public.place_results.push(result.reference); // marker?
$(document).trigger('test', result.reference);
}
}
dfd.resolve(public.place_results, searchIndex+1);
});
return timeDelay(1000).then(function() {
return dfd.then(findNextPlaces);
});
}
else {
return dfd.resolve(public.place_results).promise();
}
}
return findNextPlaces(public.place_results, 0);
}
答案 0 :(得分:1)
$.search(boxes).then(function(results) {
…
}), function(error) {
…
};
这是一个语法错误 - 你想要
$.search(boxes).then(function(results) {
…
}, function(error) {
…
});
return dfd.reject("failed").promise();
是一个风格问题 - 你不能return
来自回调的任何内容,而你在这里不需要.promise()
。写
dfd.reject("failed");
return;