![](/img/trans.png)
[英]Calling async.waterfall within async.series function not executing async.series callback function
[英]fill a array with a callback from async.series
我在“ async.series”中的回調函數返回多個值,並從“ elements”創建多個輸出。
如何使用“ forEach”將返回值寫入數組?
async.series(
{
// Browse
elements: function(callback) {
Server_browse(item, function(result) {
callback(null,result);
});
},
},
function(err,result) {
if (err) {
console.log(" error : ", err);
console.log(err.stack);
}
console.log('elements=' + JSON.stringify(result.elements));
}
);
如果僅發出一個請求,則caolan / async沒有用。
您的item
變量來自Server_browse(item, ...
?
我可能是錯的,因為缺少信息,但是我想您要實現以下目標:
var items = ['query1', 'query2', 'query3'];
async.mapSeries(
items,
// for each item
function(item, callback) {
Server_browse(item, function(result) {
callback(null, result.elements);
});
},
// when all queries are done
function(error, resultElements) {
console.log(resultElements)
}
);
這是其他函數“瀏覽”和Server_browse。
函數“ Server_browse”將文件夾或變量分配給函數“ browse”。 在“瀏覽”中,如果項目為文件夾,我將在數組中添加變量或再次調用“ Server_browse”。 當前,我在'console.log(result.elements)'上將所有文件夾和變量分開。 但是我會把所有文件夾和變量寫在一個數組中。
var browse = function(item,indx,array,callback){
// 'item' is a Folder or Variable which i get from the server
//item = {"MyVariable1":{"referenceTypeId":"ns=0;i=46","isForward":true,"nodeId":"ns=1;i=1005","browseName":{"namespaceIndex":0,"name":"MyVariable1"},"displayName":{"text":"MyVariable1"},"nodeClass":"Variable","typeDefinition":"ns=0;i=63"}};
var child = ns='+item.browseName.namespaceIndex+';i='+item.nodeId.value;
if (item.$nodeClass.key == 'Variable') {
callback(item);
}else{
Server_browse(child,function(result){
callback(result);
});
}
}
var Server_browse = function(item,callback){
node_browse.session.browse( item,function (err, itemResults,diagnostics) {
if (err) {
console.log(err);
console.log(itemResults);
console.log(diagnostics);
}else{
for(var i=0; i<itemResults.length; i++){
itemResults[i].references.forEach(function(element,index,arr){
browse(element, index, arr, function(item){
callback(item);
});
});
}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.