我实际上是 JavaScript 新手。所以这是我的问题。
从我学到的。我可以在自调用函数( Example1 )中创建一个公共函数(getHello )并从另一个自调用函数(Example2)调用创建的公共函数,如下所示:-
// first self-invoke function
const Example1 = (() => {
// daclare var to hold Hello World
let hello = 'Hello World'
return {
// create public function to passed 'Hello World'
getHello: () => {
return hello
}
}
})();
// second self-invoke function - receive 1 argument (Example1 function)
const Example2 = ((e1) => {
// declare new var
let newHello = e1.getHello()
console.log(newHello) // will Output: Hello World
})(Example1);
我试过上面的代码,效果很好。从来不知道 JavaScript 可以这么有趣!这意味着我基本上可以将Example1中的任何私有“数据”共享给任何其他自调用函数,只要我创建一个公共函数来启用数据共享。
无论如何,考虑到这一点。我想为什么不创建一个专用的自调用函数来处理从 API 获取的任何数据。所以要做到这一点,我需要将async放在自调用函数中,以便使用 await 获取 json 数据(如下所示)
// first async self-invoke function
const Example1 = (async() => {
// get data from API fetch
let res = await fetch(API_URL)
let json = await res.json()
let hello = json
return {
// create public function to passed 'Hello World'
getHello: () => {
return hello
}
}
})();
// second self-invoke function - receive 1 argument (Example1 function)
const Example2 = ((e1) => {
// declare new var
let newHello = e1.getHello() // error occurs here
console.log(newHello)
})(Example1);
但不幸的是,这样做。它给了我这个错误说"e1.getHello is not a function"。
我试过在谷歌上搜索答案或任何解释。但我似乎找不到任何相关主题来讨论我在这里说明的内容。
所以问题是;-
1) 异步自调用函数可以完全返回公共函数吗?或者我根本不应该或不建议这样做?
2)如果可以/不能,那为什么?
任何帮助,将不胜感激!