当一个任务没有出错时,如何生成某些任务并停止执行?我写了一些执行此操作的代码,但在我看来,代码不是很易读。有没有一种模式或最佳实践可以做到这一点?
下面的代码将尝试查找可用文件夹,并在找到文件夹时停止搜索。这只是一些演示代码。没有找到文件夹时,错误处理例如丢失。
代码:
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);
});
}