嵌套Promise链是否被视为反模式?

时间:2019-05-03 11:58:43

标签: javascript promise es6-promise

我正在使用Firebase,并且编写了如下代码:

firebase.database().ref().child('someChild').set({
    someKey: 'someValue'
}).then(() => {
    return firebase.database().ref().child('someChild').once('value')
        .then(snapshot => snapshot.val().someKey);
}).then(insertedData => {
    console.log('Your inserted data:' + insertedData);
});

如您所见,我的外部Promise(嵌套)中还有另一个Promise。这是反模式吗?应该避免吗?

1 个答案:

答案 0 :(得分:1)

嵌套诺言不是这里的反模式,实际上建议这样做。反模式部分将设置异步等待执行块。由于await等待调用结束,因此将阻塞线程,但会执行其他子线程。仅凭代码还不足以确定它是否是反模式,而是通常使用链嵌套,因为在执行其他“ then” -s之前需要完成一些过程。