javascript - 包含的功能同步运行

标签 javascript node.js asynchronous

我有一个关于所包含函数的同步运行的问题。例如,我有以下代码。

partitions(dataset, num_of_folds, function(train, test, fold) {
  train_and_test(train,test, function(err, results)
  {
  })
})

其中 partitions 运行 num_of_folds 次,对于不同的折叠,它返回不同的训练集和测试集。我想仅在 train_and_test 完成时运行分区的每次迭代。如何做到这一点?

最佳答案

鉴于您之前的问题:Optimum async flow for cross validation in node.js ,我知道 partition 是您自己的函数,它将数据集分成几个部分,然后为每个部分运行回调(这里基本上是 train_and_test )。

您现在的问题是 train_and_test 是异步的,但您希望等待每个调用完成(我认为这是通过调用其自己的回调来发出信号的),然后再运行下一个调用。

一个简单的解决方案是更改代码以保持状态,并从回调运行下一个调用。例如:

exports.partitions = function(dataset, numOfPartitions, callback) {
    var testSetCount = dataset.length / numOfPartitions;
    var iPartition=0;
    var iteration = function() {
        if (iPartition<numOfPartitions)
        {
            var testSetStart = iPartition*testSetCount;
            var partition = exports.partition(dataset, testSetStart, testSetCount);
            callback(partition.train, partition.test, iPartition, iteration);
            iPartition++;
        }
    };
    iteration();
};

然后,您需要将附加回调传递给异步函数:

partitions(dataset, num_of_folds, function(train, test, fold, callback) {
  train_and_test(train,test, function(err, results)
  {
      callback();
  })
});

请注意,我尚未测试上面的任何代码。

关于javascript - 包含的功能同步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495663/

相关文章:

php - 网站关闭优惠 PHP/Javascript

javascript - 如何修复 window.CKFinder 未定义

javascript 作为 oop 可能吗?

node.js - 错误 : Platform can NOT be empty at new Payload in Dialogflow

xcode - 如何使解析查询同步快速

javascript - 查找输入位置和附近位置的商店并计算它们与搜索位置的距离

javascript - NodeJs/Formidable,上传图片错误

node.js - Mongoose 映射中的类型检查

c# - 中间层中异步 WCF 服务调用和将数据返回到 UI 层的质量设计

javascript - 为什么提示后会执行音频?