ajax リクエストを処理し、そこからデータを取得するために使用する小さな関数があります。
すべての JSON が配列に集約されたら、イベントを発生させます。
私の問題は、配列である変数 mySources が処理中に変更されることです。イベントをトリガーする前は、予想どおり、4 つの配列の配列ですが、「リッスン」された後は単なる配列です (配列内の 1 つの配列ではなく、最初の配列のみ)。
function setSources(){
var deffereds = [];
if (arguments.length == 0)
{
deffereds.push(getTweets()),
deffereds.push(getFacebookstatuses()),
deffereds.push(getCampaigns()),
deffereds.push(getArticles())
}
else
{
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] == 'tweet'){
deffereds.push(getTweets())
}
else if (arguments[i] == 'facebookstatus'){
deffereds.push(getFacebookstatuses())
}
else if (arguments[i] == 'campaign'){
deffereds.push(getCampaigns())
}
else if (arguments[i] == 'article'){
deffereds.push(getArticles())
}
}
}
$.when.apply(null,deffereds).done(function(){
var mySources = new Array();
for (var i = 0; i < arguments.length; i++) {
mySources[i]=$.parseJSON(arguments[i][2].responseText).objects;
};
console.log(mySources); **// This gives me an array of 4 arrays as expected**
$(document).trigger('cal/results',mySources);
});
$(document).on('cal/mySources', function(e,mySources){
console.dir(mySources); **// This gives me only the first of the 4 arrays**
});
};