2017-02-01 3 views
0

メッセージを正しく表示するには、次のタスクをどのように管理しますか?タスクが実際に完了する前に、「Finished」が表示されます。リクエストモジュールのためだと思います。私はその要求を約束に包んだが運がないようにした。何か案は?gulpタスク実行要求がログメッセージを表示していません

gulp.task('sign', function() { 

    util.log(util.colors.yellow('fetching build number from remote URL:')); 
    util.log(util.colors.yellow(JENKINS_URL)); 

    request(JENKINS_URL, function(err, res, body) { 
    var parsed = isJson(body); 
    var number = parsed.number; 

    return gulp.src(path.join(DIST_DIR, '**')) 
     .pipe(replace('<%= B =%>', number)) 
     .on('end', function() { 
     util.log(util.colors.yellow('new build number is: ' + number)); 
     }) 
     .pipe(replace('<%= V =%>', VERSION)) 
     .on('end', function() { 
     util.log(util.colors.yellow('app version is: ' + VERSION)); 
     }) 
     .pipe(gulp.dest(DIST_DIR)) 
     .on('finish', function() { 
     util.log(util.colors.green('operation ended successfully!')); 
     }); 
    }); 
}); 
+0

イメージとしてではなくテキストとしてコードを入れてください... –

+0

あなたは正しいです、なぜ私はその笑をしたのですか? – kfa

答えて

1

あなたのタスクは非同期です(リクエストしています)。したがって、パラメータ(関数)を取得して、それが完了したら呼び出す必要があります。

は、たとえば次の点を考慮done関数が呼び出されたときに終了したよう

gulp.task('sign', function(done) { 

    util.log(util.colors.yellow('fetching build number from remote URL:')); 
    util.log(util.colors.yellow(JENKINS_URL)); 

    request(JENKINS_URL, function(err, res, body) { 
    var parsed = isJson(body); 
    var number = parsed.number; 

    return gulp.src(path.join(DIST_DIR, '**')) 
     .pipe(replace('<%= B =%>', number)) 
     .on('end', function() { 
     util.log(util.colors.yellow('new build number is: ' + number)); 
     }) 
     .pipe(replace('<%= V =%>', VERSION)) 
     .on('end', function() { 
     util.log(util.colors.yellow('app version is: ' + VERSION)); 
     }) 
     .pipe(gulp.dest(DIST_DIR)) 
     .on('finish', function() { 
     util.log(util.colors.green('operation ended successfully!')); 
     done(); 
     }); 
    }); 
}); 

それを行うことで、あなたのタスクは考慮されます。

+0

アダムさん、ありがとうございます。 "タスク完了コールバックが頻繁に呼び出されました"というエラーが表示されます。しかし、それは問題ありません、私はその作業のために必要なだけです。 – kfa

+0

なぜそれを繰り返し呼びますか?これを一度だけ行う必要があり、このような非同期タスクでのみ必要です –

関連する問題