【发布时间】:2018-11-03 02:14:26
【问题描述】:
下面是一个简单的例子来说明我为什么要尝试使用 fetch API。我希望 async fetchAsync() 会阻塞,直到它返回数据(或异常),但输出显示它没有。
constructor
entering fetchAsync...
** we are here!!! **
leaving fetchAsync.
finish initialization
当我的对象使用文件内容完成初始化时,我一直试图弄清楚如何在finish initialization 之后显示完成字符串 (we are here)。 await/async 不应该在完成之前阻塞吗?
class A {
filename = "./resources/test.json";
constructor() {
console.log("constructor");
this.fetchAsync(this.filename)
.then( data => this.initialize(data)
).catch(reason => console.log(reason.message))
}
async fetchAsync(filename) {
console.log("entering fetchAsync...");
let data = await (await fetch(filename)).json();
console.log("leaving fetchAsync.");
return data;
}
initialize() {
setTimeout(() => console.log("finish initialization"), 1000)
}
}
let a = new A();
console.log("*** we are here!!! ***");
【问题讨论】:
标签: javascript asynchronous async-await es6-promise