Асинхронные задачи, 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, время: 14:26. |