gpt4 book ai didi

javascript - 使用 promise() ECMAScript 6 异步加载文件后访问类

转载 作者:行者123 更新时间:2023-11-29 19:08:59 26 4
gpt4 key购买 nike

我是 ECMAScript 的新手,正在尝试异步加载文件并访问该类,但我做不到。

我的 main.js 有基础类

console.log("=============in main script=================")

class test{

constructor(auth_key,auth_secret){
this.auth_key = auth_key;
this.auth_secret = auth_secret;
console.log("============In class test============");
}

init(){
console.log("============In init function============"+this.auth_key);
}
}

尝试访问 index.html 中的类

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<script type="text/javascript">
function sttAsyncLoad(){
console.log("===========loading script asynchronously============");
return new Promise(function (resolve, reject) {
var s;
s = document.createElement('script');
s.src = "src/main.js";
s.onload = resolve;
s.onerror = reject;
document.head.appendChild(s);
});
}
sttAsyncLoad();

let sObj = new test("test","test11");
</script>
</body>
</html>

输出错误 Uncaught ReferenceError: test is not defined

谁能帮帮我。

最佳答案

您的脚本不会等到 promise 得到解决。它将运行

let sObj = new test("test","test11");

立即,无论脚本是否已经加载。

相反,使用 promise 的 then() 等待它解决:

function sttAsyncLoad(){
console.log("===========loading script asynchronously============");
return new Promise(function (resolve, reject) {
var s;
s = document.createElement('script');
s.src = "src/main.js";
s.onload = resolve;
s.onerror = reject;
document.head.appendChild(s);
});
}
sttAsyncLoad().then(function() {
let sObj = new test("test","test11");
});

关于javascript - 使用 promise() ECMAScript 6 异步加载文件后访问类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com