如何嵌套承诺并捕获外部承诺中的错误

时间:2017-06-13 16:33:04

标签: javascript promise bluebird

我正在编写单元测试以确保catch在以下函数中起作用:

df[which(df$student %in% df$student[which(df$addQual >0)]), ]
   student semester addQual
1     John        1       1
2     John        2       0
3     John        3       0
4     John        4       0
5     John        5       1
6     John        6       0
14  Jeremy        1       0
15  Jeremy        2       0
16  Jeremy        3       1
17  Jeremy        4       0
18  Jeremy        5       1

}

我无法从外部的内部捕获中捕获错误,因为我的单元测试失败了。

我尝试将内部函数中的catch排除,但是没有用。

如果在getSomeMorePromises()中未解析promise,我将如何确保在外部返回错误并将其捕获?

1 个答案:

答案 0 :(得分:1)

承诺链是由您从then()回调中返回的承诺组成的。

仅在then()回调中创建承诺不会链接到它或以任何方式处理其错误。

你需要归还这些承诺:

function myFunction() {
    const myPromises = Promise.all(getMyPromises())

    return myPromises.then(objArray => {
        return Promise.all(objArray.map(getOtherPromise));
    )).then(response => {
        return Promise.all(getSomeMorePromises());
    });
}