Асинхронные задачи, callback
Добрый день друзья, помогите пожалуйста разобраться... вроде элементарные вещи разбираю, но почему-то вывод происходит не в том порядке.
function processBuild (srcUrl, baseUrl, destUrl, newest, callback) {
return src(srcUrl)
.pipe(gulpif(newest, changed(path.tmp.temp + baseUrl)))
.pipe(dest(destUrl + baseUrl)
.on('end', () => { if(true) {console.log(srcUrl); callback;} }));
}
var done = (url) => {
console.log('done');
return 'OK';
}
function setBuild (destUrl, newest) {
processBuild(path.css.files, path.css.folder, destUrl, newest,
processBuild(path.css.mapFiles, path.css.mapFolder, destUrl, newest,
processBuild(path.html.files, path.html.folder, destUrl, newest,
processBuild(path.js.files, path.js.folder, destUrl, newest,
done()))));
return src('./');
}
function tempBuild () { return setBuild(path.tmp.temp, false); }
task('test', tempBuild);
в setBuild я вызываю функции по очереди через callback и ожидаю увидеть в консоли следующий порядок: ./alecto/my/styles/all/theme/**/*.css ./alecto/my/styles/all/theme/**/*.map ./alecto/my/styles/all/template/**/*.html ./alecto/my/styles/all/template/**/*.js но вывод происходит непонятно в каком порядке: ./alecto/my/styles/all/theme/**/*.map ./alecto/my/styles/all/template/**/*.js ./alecto/my/styles/all/theme/**/*.css ./alecto/my/styles/all/template/**/*.html помогите пожалуйста разобраться, где ошибка. пробовал через async/away - та же ерунда получается. |
Попробуйте как-то так:
function setBuild (destUrl, newest) {
processBuild(...)
.pipe(processBuild(...))
.pipe(processBuild(...))
.pipe(processBuild(...))
.pipe(processBuild(...))
return src('./');
}
function processBuild (...) {
var $d = $.Deferred();
src(srcUrl)
.pipe(gulpif(newest, changed(path.tmp.temp + baseUrl)))
.pipe(dest(destUrl + baseUrl)
.pipe( function(){ console.log(srcUrl); $d.resolve(); } )
return $d;
}
|
| Часовой пояс GMT +3, время: 09:34. |