作爲一種組織模式,ES6 Classes可以提供什麼樣的異步代碼。下面是ES7 async/await的一個例子,ES6類可以有一個異步方法,或ES7中的構造方法嗎?JavaScript ES6類與異步代碼庫的任何用法?
我可以這樣做:
class Foo {
async constructor() {
let res = await getHTML();
this.res = res
}
}
,如果沒有應該如何構造的工作,做到這一點?
class Foo {
constructor() {
getHTML().then(function (res) {
this.res = res
}
}
}
如果沒有這些模式的工作,可以在ES6構造(而且班)class
支持任何形式的異步的,關於對象的狀態下工作?或者,它們只是用於純粹的同步代碼庫嗎?以上的例子是在構造函數中,但他們並不需要是..推下來的問題多了一個層次..
class Foo {
myMethod() {
/* Can I do anything async here */
}
}
或者,吸氣劑...
class Foo {
get myProp() {
/* Is there any case that this is usefully asynchronous */
}
}
的只有我能想到的例子是在同一個方法/構造函數/ getter中並行運行一些東西,但要在結束之前解決整個問題。我只是感到困惑,因爲它似乎與所有的推動完全異步庫,這只是用來混淆事物。除了教科書的例子,我找不到一個他們有用的應用程序。
您可以從構造函數返回一個承諾,該實例通過該實例解析,因此您可以在實例初始化後訪問該實例。 –
@KevinB這個想法確實發生在我身上,但這聽起來很可怕。 –
我也不特別喜歡它,但是......還有什麼其他方式?必須有一個回調的地方,它要麼是一個承諾,要麼是作爲參數傳遞的回調。異步/等待仍然有一個回調,你只是沒有看到它。 –