[英]NodeJS: Abort request function inside loop
我正在創建一個可以在網站上下載多個頁面的電子應用程序。 我希望能夠通過立即終止功能來在每次按下“停止”按鈕時停止下載頁面。 我嘗試通過將功能設置為新功能來停止該功能,但是由於下載是在功能循環中進行的,因此它並未停止(我不確定這種方法是否還會停止startDownload功能)。
有沒有一種方法可以輕松地停止執行函數,而不會停止整個腳本?
編輯:如果沒有辦法停止執行該函數,是否有辦法發送消息並停止NodeJS請求?
編輯2:NodeJS請求具有中止方法,但是我不確定如何告訴函數中止請求?
startDownload('website.com');
startDownload(url) {
var startAt = 0;
var maxPages = 15;
download(url, startAt, maxPages);
}
download(url, page, maxPages) {
if (page == maxPages) { finishDownload(url); return; }
request(url + '?p=' + page, (error, response, html) => {
downloadPage(html);
download(url, page + 1, maxPages);
}).catch((error) => {
finishDownload(url, 'Failed to download');
});
}
finishDownload(url, error = undefined) {
if (!error) {
alert(url + ' finished downloading');
} else {
alert(url + error);
}
}
$(document).on('click', '#stopDownload', function() {
var downloadFunction = startDownload;
startDownload = function() {return false};
startDownload = downloadFunction;
alert('download stopped by killing function');
});
是的,你可以過去
var r = request({uri: 'http://stackoverflow.com' }, function (error, response, body) {
console.log('url requested ') ;
if (!error){
console.log(body);
}
else
{
console.log(error);
}
});
r.abort();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.