Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2018, 22:06
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

Асинхронные задачи, 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 - та же ерунда получается.
Ответить с цитированием
  #2 (permalink)  
Старый 22.10.2018, 11:05
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Попробуйте как-то так:
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;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Работы с callback функциями jenek_34 Общие вопросы Javascript 13 25.03.2015 12:03
Работа с textarea Rompo Events/DOM/Window 14 16.12.2013 17:41
callback для анонимной функции gh321 jQuery 2 18.11.2013 13:20
Callback работает не так как я от него жду singaporian Общие вопросы Javascript 3 14.08.2013 00:42