首页 > 解决方案 > 如何使“onload”等待“fetch”完成?

问题描述

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

一些.html

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

一些.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()对我不起作用。

现在我的问题正如标题所说,我怎样才能让“onload”等待“fetch”完成?

标签: javascriptasynchronousfetch

解决方案


我认为您要实现的是在 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");
};

推荐阅读