Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用async.series的回调填充数组_Javascript_Node.js - Fatal编程技术网

Javascript 使用async.series的回调填充数组

Javascript 使用async.series的回调填充数组,javascript,node.js,Javascript,Node.js,“async.series”中的回调函数返回多个值,并从“elements”创建多个输出 如何使用“forEach”将返回值写入数组 async.series( { // Browse elements: function(callback) { Server_browse(item, function(result) { callback(null,result); });

“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没有任何用处

服务器浏览(项目,
)中,
项目
变量来自何处

我可能错了,因为缺少信息,但我认为您希望实现以下目标:

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\u browse”将文件夹或变量委托给函数“browse”。在“browse”中,我将在数组中添加该变量,或者再次调用“Server\u 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);                             
                        });
                    });
                }
          }
    });
}
var browse=function(项、indx、数组、回调){
//“item”是我从服务器获取的文件夹或变量
//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;
如果(项$nodeClass.key=='Variable'){
回收(项目);
}否则{
服务器浏览(子项、函数(结果){
回调(结果);
});
}
}
var Server_browse=函数(项,回调){
节点_browse.session.browse(项、函数(错误、项结果、诊断){
如果(错误){
控制台日志(err);
console.log(itemResults);
控制台日志(诊断);
}否则{
对于(var i=0;i