我有我需要遵循嚴格的JavaScript API的命名方案,它看起來像這樣:返回對象調用函數裏面回調
var Items = function() {
this.items = [];
};
Items.prototype.get() {
db.items.find(function(err, items) {
this.items = items;
});
return this.items;
}
的問題是異步調用(db.items.find ..)在沒有時間的get之前完成()方法返回一個空this.items ..
客戶需要做出這樣的呼籲:
items = new Items();
console.log(items.get());
什麼是處理異步調用的最佳實踐他重新按照API命名方案仍然嚴格?
是否有一些本地方式,我可以讓()等待回調裏面的回調還是我需要某種異步庫嗎?
我不清楚命名方案與你的問題有什麼關係,這似乎更多關於異步問題。你是否試圖說你不能改變'.get()'方法的名稱或參數(所以你不能設置它來使用回調或其他)? – nnnnnn
@nnnnnn,我就是這麼說的。我需要遵守這個命名方案(不會更改.get())的名稱或參數),原因有很多。 – Niklas9
無論您是否嚴格要求,都無法在JavaScript中進行異步調用。雖然像C#這樣的語言支持使異步編程易於閱讀和編程,但JavaScript具有回調。 (在C#中,'Console.Writeline(await items.Get())')。 – WiredPrairie