我有这段代码:
setProductsToUser: function(productsArr, userId) {
console.log('***********************************************');
channelsToActivate = {}
count = 0
for (var i = 0; i < productsArr.length; i++) {
console.log('ref.child(user_products).child('+userId+').child('+productsArr[i]+').set(true);')
count++
ref.child('products').child(productsArr[i]).once('value', function(productSnap) {
count--
console.log(count)
if(productSnap.val()){
for (key in productSnap.val().channels) {
channelsToActivate[key] = true
console.log(channelsToActivate)
}
if (count == 0){
for (key in channelsToActivate) {
console.log('ref.child(system_user).child('+key+').child('+userId+').set(true);')
console.log('ref.child(user_system).child('+userId+').child('+key+').set(true);')
}
}
}
})
}
我发送了这样的代码:
productsM.setProductsToUser(['com-dummy-dummy-1month'], '2HWdYcvGydTYdrxn2ZGCFsGYV8J2')
productsM.setProductsToUser(['com-dummy-dummy-3months'], '2Wv6tZWC4EO0cb2JivqXLu53S4q1')
输出结果为:
***********************************************
ref.child(user_products).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).child(com-dummy-dummy-1month).set(true);
***********************************************
ref.child(user_products).child(2Wv6tZWC4EO0cb2JivqXLu53S4q1).child(com-dummy-dummy-3months).set(true);
0
{ '-KUrkIm_pxcACN_ONuWd': true }
-KUrkIm_pxcACN_ONuWd
ref.child(system_user).child(-KUrkIm_pxcACN_ONuWd).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).set(true);
ref.child(user_system).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).child(-KUrkIm_pxcACN_ONuWd).set(true);
-1
{ '-KUrkIm_pxcACN_ONuWd': true }
应该是:
***********************************************
ref.child(user_products).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).child(com-dummy-dummy-1month).set(true);
0
{ '-KUrkIm_pxcACN_ONuWd': true }
-KUrkIm_pxcACN_ONuWd
ref.child(system_user).child(-KUrkIm_pxcACN_ONuWd).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).set(true);
ref.child(user_system).child(2HWdYcvGydTYdrxn2ZGCFsGYV8J2).child(-KUrkIm_pxcACN_ONuWd).set(true);
***********************************************
ref.child(user_products).child(2Wv6tZWC4EO0cb2JivqXLu53S4q1).child(com-dummy-dummy-3months).set(true);
0
{ '-KUrkIm_pxcACN_ONuWd': true }
-KUrkIm_pxcACN_ONuWd
ref.child(system_user).child(-KUrkIm_pxcACN_ONuWd).child(2Wv6tZWC4EO0cb2JivqXLu53S4q1).set(true);
ref.child(user_system).child(2Wv6tZWC4EO0cb2JivqXLu53S4q1).child(-KUrkIm_pxcACN_ONuWd).set(true);
我成功地将最后一个输出放置了一个4秒的setTimeout:
productsM.setProductsToUser(['com-dummy-dummy-1month'], '2HWdYcvGydTYdrxn2ZGCFsGYV8J2')
setTimeout(function() {
productsM.setProductsToUser(['com-dummy-dummy-3months'], '2Wv6tZWC4EO0cb2JivqXLu53S4q1')
}, 4000);
如何在每次通话中都没有超时的情况下达到所需的输出? (我会在代码中为该函数循环一百次 - setProductsToUser)为什么计数器转到-n?