1. 程式人生 > 其它 >【gulp】Did you forget to signal async completion?

【gulp】Did you forget to signal async completion?

技術標籤:NodeJS初步認識gulp

Did you forget to signal async completion?問題解決

問題出現

在學習使用前端自動化工具gulp時,測試一個task時,控制檯顯示如下提示:
在這裡插入圖片描述
查閱Stack Overflow,有以下幾種解決辦法。

現象

原始碼(gulpfile.js):
// 複製資料夾
gulp.task('copy',()=>{
    
    gulp.src('./src/images/*')
        .pipe(gulp.dest('dist/images'));

    gulp.src('./src/lib/*')
        .
pipe(gulp.dest('dist/lib')); })
報錯

在這裡插入圖片描述

修改後的程式碼
// 複製資料夾
gulp.task('copy',async ()=>{

    await gulp.src('./src/images/*')
        .pipe(gulp.dest('dist/images'));

   await gulp.src('./src/lib/*')
        .pipe(gulp.dest('dist/lib'));
})
控制檯輸出

在這裡插入圖片描述

總結

在執行檔案拷貝時需要一定的時間,而js的語法規範規定js是非同步執行任務的,這就會提示你在執行操作時不要忘了這個單執行緒非同步任務。

由於返回的是Promise物件,所以我使用的 async await 這個es7中promise的語法糖來解決非同步提示問題。