1
此函数不让我将数据传递到函数外。 它返回正确的数据,但每当我尝试将它添加到数组或类似的函数外,它不会返回任何东西。 我知道一些冗余的json解析和字符串化,但请忽略它。我试图设置全局变量没有任何运气。无法返回函数内部的值
var item.jid = 342323; //example
p = connection.vCard.get(item.jid);
p.done(function(vCard) {
var json = JSON.stringify(vCard);
var json = $.parseJSON(json);
$(json).each(function(item,val) {
$.each(val,function(k,v) {
var json2 = JSON.stringify(v);
var obj = JSON.parse(json2);
var what = obj.BINVAL;
if(what != undefined) {
var bgimg = what;
bgimg = "data:image/jpeg;base64,"+bgimg;
//console.log(bgimg); //This returns correct data, but only from within this each loop.
//return bgimg; //this does not return anything
//arr.push(bgimg);//this does not push anything to array
//console.log(item.jid); //does not return global var
}
});
});
});
编辑
继承人的功能,我尝试拉(与罗密的回答改变)进一步澄清:我建立与造型一contactroster。
var bgimg=null;
var arr = new Array();
function getAvatar(vCard) {
var json = JSON.stringify(vCard);
var json = $.parseJSON(json);
$(json).each(function(item,val){
$.each(val,function(k,v){
var json2 = JSON.stringify(v);
var obj = JSON.parse(json2);
var what = obj.BINVAL;
if(what != undefined){
bgimg = what;
bgimg = "data:image/jpeg;base64,"+bgimg;
arr.push(bgimg);
//console.log(bgimg); //This returns correct data.
}
});
});
};
function getRoster(){
connection.roster.requestRoster(function(roster){
var items = roster.getItems();
for(var i = 0; i < items.length; i++){
var arr = new Array();
var item = items[i];
var thejid = item.jid;
var thename = item.name;
arr.push(thejid);
arr.push(thename);
p = $.Deferred();
p = connection.vCard.get(item.jid);
p.done(function(vCard) {
getAvatar(vCard);
});
p.resolve();
console.log(arr);
var theavatar = //This would return whatever the deferred function would throw me.
$('.sidebar-nav').append("<li class='contacts'><div id='"+thejid+"' class='avatar' src='"+theavatar+"'></div><a href='#' class='"+thejid+"'>"+thename+"</a></li>");
}
嘿Royi,感谢您抽出宝贵时间来帮忙,我真的很感激! 你说得对,它处于延期模式。使用你的逻辑,我能够触发显示正确数据的警报。然而,即时通讯仍然无法将数据实际传递到任何可用的数组或变量。 我最终将数据存储在localstorage中,并从那里抓取它。然而,这感觉很不好。 我发现推迟是很难理解,我可能会找到另一个图书馆,在一个更直接的庄园。 – Havihavi
“_im仍然无法将数据实际传递到任何可用的数组或变量_”-----我的第一个示例将数据传递给变量。看看myResult。 –
我很茫然,对不起,它看起来对我来说是通过resolve()函数传递数据的。我更新了我的代码到完整的monty,所以你可以看看如果你有时间=) – Havihavi