簡體   English   中英

NodeJS:循環內中止請求功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM