嘗試查找使用Firebase .on("child_added")
與Q庫(或任何類似的庫,我不是部分)在Node.js
中返回數據數組的最佳用法示例;使用Firebase返回陣列
我已經嘗試過使用Q.all()
,但它似乎永遠不會等待承諾返回前填充。這是我當前的示例:
function getIndex()
{
var deferred = q.defer();
deferred.resolve(new FirebaseIndex(Firebase.child('users').child(user.app_user_id).child('posts'), Firebase.child('posts')));
return deferred.promise;
}
function getPost(post)
{
var deferred = q.defer();
deferred.resolve(post.val());
return deferred.promise;
}
function getPosts()
{
var promises = [];
getIndex().then(function (posts) {
posts.on('child_added', function (_post) {
promises.push(getPost(_post));
});
});
return q.all(promises);
}
JS沒有辦法在代碼中「封鎖」。所有q.all()都會做的是創建一個新的承諾,在其他一切完成時完成。但它沒有辦法讓它們等待它們完成。 JS不以這種方式工作... –