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

Not*_*123 1 javascript asynchronous fetch

长话短说,我将展示代码。

一些.html

<html><script src="some.js"></script></html>
Run Code Online (Sandbox Code Playgroud)

一些.js

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

和 some.html 输出:

onload
in async
Run Code Online (Sandbox Code Playgroud)

我已经完成了一些工作,例如在实际获取中加载图像,所以fetch().then()对我来说不起作用。

现在我的问题是如标题所示,如何让“onload”等待“fetch”完成?

Jar*_*a X 7

我认为你想要实现的是在 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");
};
Run Code Online (Sandbox Code Playgroud)