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

Is it considered an antipattern to nest Promise chains?

我使用的是 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。这是否被认为是一种反模式,我应该避免它吗?

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