如何使“ onload”等待“ fetch”完成?

时间:2019-09-14 12:52:46

标签: javascript asynchronous fetch

长话短说,我会显示代码。

some.html

<html><script src="some.js"></script></html>

some.js

window.onload = () => console.log( "onload" );
(async (url, cb) => cb( await ( await fetch(url) ).json() ))
( "some.json", () => console.log( "in async" ) );

和some.html输出:

onload
in async

我已经做了一些工作,例如图像以真实获取的方式加载,因此fetch().then()对我不起作用。

现在我的问题就如标题所述,如何让“加载”等待“获取”完成?

1 个答案:

答案 0 :(得分:1)

我认为您要实现的是在window.onload之前开始获取,但是onload需要等待获取之后再执行其他操作...

const promiseOfSomeData = fetch("some.json").then(r=>r.json()).then(data => {
    console.log('in async');
    return data;
});
window.onload = async () => {
    let someData = await promiseOfSomeJsonData;
    console.log("onload");
};