2014-02-12 43 views
0

如何从集合中删除所有记录?我试着按照下图所示做,但1000条记录中有1000条回调。应该有更好的方法。从一个一个删除记录的最后回调的Javascript代码

dpd.mycollection.get(function(result,error){ 
result.forEach(function(entry) { 
    dpd.mycollection.del(entry.id,function(){}); 
}); 
}) 

我想在最后一条记录被删除后才执行一些代码。我只是不知道该怎么做。

+1

哪个库是th如果有的话?承诺在哪里?或者你想使用承诺,但尚未?在这种情况下,谷歌的“JavaScript承诺”,你会发现很多库。 –

回答

0

假设Q

Q.ninvoke(dpd.mycollection, "get").then(function(res) { 
    return Q.all(res.map(function(entry) { 
     return Q.ninvoke(dpd.mycollection, "del", entry.id); 
    })); 
}).then(function(dels) { 
    console.log("results of all deletions", dels); 
}, function(err) { 
    console.error("there was an error somewhere", err); 
}); 
0

目前尚不清楚其中的代码运行,但我会建议使用async.each

function delete_entry (entry, callback) { 
    dpd.mycollection.del(entry.id, callback); 
} 

async.each(entries, delete_entry, function (err) { 
    console.log('finished!'); 
}); 

的方式做到这一点没有任何图书馆是有个计数器:

var deleted_records = 0; 

entries.forEach(function (entry) { 
    dpd.mycollection.del(entry.id, function() { 
    deleted_records++; 

    //are more records pending to be deleted? 
    if (deleted_records < entries.length) return; 

    //at this point deleted_records is equal to the amount of entries 
    //so we can asume all records have been deleted 
    console.log('finished!'); 
    }); 
}); 
相关问题