2017-06-22 89 views
0

我想運行gplp任務,請求api終端並監視響應的變化,檢測到變化後,gulp將運行build任務。觀看gulp http響應的變化

爲了實現它,我創建了一個任務手錶文件,請求響應體:運行API請求

gulp.task('watch-response', function() { 
    gulp.watch('response_file', function() { 
     gulp.start('build'); 
    }); 
}); 

而且一個任務,解析響應身體JSON,並將其保存在文件response_file

request = require('request'), 
fs = require('fs'); 

gulp.task('api_request', function() { 
    request('www.api.com/endpoint', function(error, response, body) { 
     var hash = JSON.parse(body).hash; 
     fs.writeFileSync('response_file', hash); 
    }); 
}); 

這裏的問題是,我想運行在一些延遲循環api_request任務,所以API將不斷提出要求。我嘗試在while(true)循環中運行它,但它出錯了。

回答

1

可以使用setTimeout,就像這一點,那麼就會在循環作品與一些延遲:

gulp.task('api_request', function() { 
     var delay = 1000; 
     function const_request(){ 
     request('www.api.com/endpoint', function(error, response, body) { 
      var hash = JSON.parse(body).hash; 
      fs.writeFileSync('response_file', hash); 
      setTimeout(const_request, delay); 
     }); 
     } 
    const_request(); 
    }); 
+0

感謝簡單而明確的遞歸的解決方案! :) – strongBAD

+0

不客氣! – sunt