Gulp任务不会退出

我有一个gulpfile.js有一堆的任务。

我注意到,我的吞咽任务运行,但完成后,他们不会退出/终止。 我必须使用control + c来退出。 我经历了一个线程,谈到类似的问题,但它使用的是一口气摩卡,并在插件中有一个问题。

就我而言,我也知道是什么造成了这个问题。 我已经写了一个js( edgecaset.js )文件,写入我的gulp文件(其中一个任务使用该文件中的一个函数)。 这是一个简单的文件,其中一个函数与一个rest api交互。 如果我不需要这个文件,一切都很好。

我正在从edgecast.js文件中导出一个函数,以便在edgecast.js文件中使用。 它有一个调用setTimeOut函数(这可能是问题?)

任何人都可以帮我找出问题吗?

 var main = function () { console.log(config.edgecast.username); ftp.put(config.ftp.local_path, config.ftp.remote_path, function(hadError) { if (!hadError) { console.log('File transferred successfully'); rest.put(config.edgecast.purge_url, purgeOptions).on('complete', function(data, response) { if (response.statusCode != 200) console.log('Purge failed'); else { console.log('Purge request Issued'); purgeID = data.Id; setTimeout(function() { rest.get(config.edgecast.get_purge_url + purgeID, purgeOptions).on('complete', function(data) { if (data.CompleteDate) { console.log('Purge completed on ' + data.CompleteDate); rest.put(config.edgecast.load_url, loadOptions).on('complete', function(data, response) { if (response.statusCode == 200) console.log('Asset Loaded'); else { console.log('Load Failed'); console.log(response.statusCode); } }); } }); }, 180000); } }); } else console.log('File Transfer Failed. ' + hadError); ftp.raw.quit(function(err) { if (err) return console.error(err); }); }); }; 

以上是我从edgecast.js文件导出的函数。 这是文件中唯一的function。 其余的只是variables。 然后在gulpfile.js中有

var edgecast = require('./ edgecast.js');

而这个需求声明导致所有的问题。

edgecast.js文件具有以下导入的库。

 var rest = require('restler'), config = require('./config'), JSFtp = require('jsftp'); 

发现问题。 因为FTP连接一直处于打开状态,他们一直等待,直到它closures,否则吞吐任务不会退出