【发布时间】:2013-12-13 13:18:25
【问题描述】:
我有一个函数可以对 Google 电子表格 API 进行两次休息调用。我使用 $.when 来确保在处理来自第二个调用的数据之前处理来自第一个调用的数据。
问题是第一个 ajax 处理程序 (getRealNames) 接收一个 javascript 对象作为其参数,但第二个处理程序 (displayTeams) 接收一个数组,第 0 个元素是我期望得到的对象。
为什么一个得到一个对象而另一个得到一个数组?他们正在调用相同的 rest api。 直到我重构代码以使用延迟而不是回调嵌套,该数组才出现。所以我认为这是一个 jquery 问题而不是电子表格 API 问题。
(见下面的屏幕截图,我已经控制台记录了两个处理程序收到的参数
//this is the function generating the REST requests, I just put it in for completeness
function getWorkSheet(doc_key,sheet){
return $.get('https://spreadsheets.google.com/feeds/list/'+
doc_key+'/'+sheet+
'/private/full?alt=json&access_token='
+ googleAPItoken)
.fail(function(){
alert("failed to get google doc:"+doc_key+" ,sheet: "+sheet);
});
}
function getRWMTeams() {
var nameQuery=getWorkSheet(doc_key,1);
nameQuery.done(getRealNames);
var repoQuery=getWorkSheet(doc_key,2);
//the deferred:'namesProcessed' is resolved in getRealNames
$.when(repoQuery,namesProcessed)
.done(displayTeams);
}
【问题讨论】:
-
可能是因为你将两个延迟对象传递给了when
标签: ajax jquery jquery-deferred google-spreadsheet-api