Node.js等待一个异步任务成功

时间:2016-06-24 09:17:56

标签: node.js asynchronous

当一个任务没有出错时,如何生成某些任务并停止执行?我写了一些执行此操作的代码,但在我看来,代码不是很易读。有没有一种模式或最佳实践可以做到这一点?

下面的代码将尝试查找可用文件夹,并在找到文件夹时停止搜索。这只是一些演示代码。没有找到文件夹时,错误处理例如丢失。

代码:

getAvailableSubFolder(callback) {
    var promises = [];

    var folderToUse = null;
    var errorToReturn = null;

    var self = this;
    for (let folderName = 0; folderName < config.storage.maxSubFolders; folderName++) {
      promises.push(new Promise(function (finished) {
        let folder = config.storage.fileLocation + folderName;
        self._spaceInFolder(folder, (error, space) => {
          if (folderToUse !== null || errorToReturn !== null) {
            finished();
            return;
          }

          if (error !== null || space) {
            folderToUse = space ? folder : null;
            errorToReturn = error;
            finished();
            return;
          }

          finished();
        });
      }));
    }

    Promise.all(promises).then(function () {
      callback(errorToReturn, folderToUse);
    });
  }

0 个答案:

没有答案