Javascript 嵌套承诺链是否被视为反模式?

Javascript 嵌套承诺链是否被视为反模式?,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我使用的是Firebase,我编写了如下代码: firebase.database().ref().child('someChild').set({ someKey:“someValue” }).然后(()=>{ 返回firebase.database().ref().child('someChild')。一次('value')) .然后(snapshot=>snapshot.val().someKey); })。然后(插入数据=>{ log('插入的数据:'+插入的数据); }); 正如你所

我使用的是Firebase,我编写了如下代码:

firebase.database().ref().child('someChild').set({
someKey:“someValue”
}).然后(()=>{
返回firebase.database().ref().child('someChild')。一次('value'))
.然后(snapshot=>snapshot.val().someKey);
})。然后(插入数据=>{
log('插入的数据:'+插入的数据);
});

正如你所看到的,我在我的外部承诺(嵌套)中还有另一个承诺。这被认为是反模式吗?我应该避免吗?

嵌套承诺在这里不是反模式,实际上建议这样做。反模式部分是设置异步等待执行块。因为wait等待调用结束并阻塞线程,但执行其他子线程。单靠代码还不足以确定它是否是反模式,但链嵌套是常用的,因为在另一个“then”-s执行之前,有一些进程需要完成。

不,这实际上是一件好事。因为像这样,你外在的承诺将等待你内在的承诺完成。只有当你不回你内心的承诺时,这才是不好的,因为你不能确定你的整个链条是否会被打破。如果您现在想避免这种情况,我想使用
async/await
可能是一种选择,但它仍然只是一些语法上的糖衣编码,用于end@Icepickle我明白了,我认为我在做一些相当奇怪的事情,因为我没有看到像我读的文档中那样的例子。感谢您的回答。使用async/await Thought,一切都会变得简单易懂。公平地说,我没有看代码,我只想回答有关嵌套承诺的问题;)