每次添加子项(也就是多次)时,都会调用方法中的childAdded回调:
listenToBuildRequests({
childAdded: (value, key) => {
console.log('value, key -> ', value, key);
}
});
是否有ES6或第三方将其连接到承诺链?
childAdded()
.then(...
我知道它不标准,我知道承诺会一次性运行,这将需要每次都产生新的承诺。然而,与Firebase合作并承诺它将使我无需在回调中重复启动承诺链:
listenToBuildRequests({
childAdded: (value, key) => {
createBuildDirectory(appId).
then(...
}
});
一个非常简单的JSBin示例(没有链接),它不假设复制promise模式,而是使用概念: http://jsbin.com/mekoza/edit?js,console
答案 0 :(得分:1)
承诺只能解决一次。由于{{1}}可以多次触发,因此无法将其链接到承诺链中。
如果您只关心添加的第一个孩子,则可以使用{{1}}。这只会触发一次而 会返回一个承诺。
答案 1 :(得分:0)
每次调用方法中的childAdded回调 添加一个孩子(也就是多次)。有没有ES6或一个 第三方,将它连接到承诺链?
你可以这样做:
(function () {
// do some stuff
return Promise.resolve("pass this value on to .then")
})()
.then ()
.then ()
.then ();
但正如ECMAScript 2016第25.4条所述:
如果一项承诺没有待决,即如果是,那么该承诺将被解决 要么完成要么被拒绝。
如果承诺已解决或已被“锁定”,则承诺将得到解决 匹配另一个承诺的状态。试图解决或拒绝 已解决的承诺无效。
因此,一旦结算,您就无法拒绝或解决Promise
。因此,无法为Promise
链的每次运行创建新的Promise
。