[英]Getting value from function with callback parameters
我試圖將在控制台日志中獲得的值附加到數組中,但我一直未定義。 我認為該函數是異步的,這就是為什么當我嘗試訪問它時在執行時是未定義的。 據我從文檔中了解到的是,它的函數參數是一個回調參數,有人可以告訴我如何使用我要附加到數組或字典上的值。
var theparam = new ROSLIB.Param({
ros : ros,
name : formid.elements[i].name
});
theparam.get(function(value) {
console.log(value)
});
在此處鏈接到文檔
您可以在調用函數時將回調函數中的值添加到數組中。 可能看起來像這樣:
var myArray = [];
theparam.get(function(value) {
myArray.push(value);
});
console.log(myArray);
編輯:啊,這是因為在完成實際的.push(未同步)之前已處理了控制台日志。 嘗試將進一步的處理代碼放入回調函數中,例如:
theparam.get(function(value) {
myArray.push(value);
console.log(myArray);
//Further code here
});
使用異步循環進行編輯:
function asyncLoop(iterations, func, callback)
{
var index = 0;
var done = false;
var loop = null;
loop =
{
next: function()
{
if (done)
{
return;
}
if (index < iterations)
{
index++;
func(loop);
} else
{
done = true;
callback();
}
;
},
iteration: function()
{
return index - 1;
},
// break: function()
// {
// done = true;
// callback();
// }
};
loop.next();
return loop;
}
您可以像這樣使用它:
asyncLoop(iterations, function(loop)
{
//Iterations here
theParam.get(function(value)
{
myArray.push(value);
loop.next();
});
}, function()
{
//Finished loop
callback();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.