我正在遍历整个外部引入的数据,在某些时候,我需要中断并结束当时的链,然后重定向页面。

我有这样的事情:

api文件

gamesApi.getAllResultsWithTeamInformation(passData)
    .then(gamesApi.filterPreviousResults)
    .then(gamesApi.checkIfWeHaveGamesToSaveToDB) //Break at if nothing to save
    .then(gamesApi.loopAndSaveToDB)
    .then(gamesApi.selectLatestLeagueID)


我想休息的地方

checkIfWeHaveGamesToSaveToDB: function (passData) {
    if(passData.uniqueData.length === 0){
        passData.req.flash('notice', 'Sorry there was nothing new to save);
        passData.res.redirect('/admin/games/' + passata.leagueInfo.year);
        passData.res.end();
    }else {
        return passData;
    }
},


但是,当passData.uniqueData.length === 0为true时,它将重定向页面,但是链将继续运行。如果passData.uniqueData.length === 0为true,如何中断/停止?

最佳答案

如下更改您的checkIfWeHaveGamesToSaveToDB函数

checkIfWeHaveGamesToSaveToDB: function (passData) {
    if(passData.uniqueData.length === 0){
        passData.req.flash('notice', 'Sorry there was nothing new to save);
        passData.res.redirect('/admin/games/' + passata.leagueInfo.year);
        passData.res.end();
        // either
        return Promise.reject('nothing new to save');
        // or
        throw 'nothing new to save';
    }else {
        return passData;
    }
},


请记住在“ then”链的末尾添加一个.catch以正确处理拒绝(即使不执行任何操作)

09-17 09:31