Я на самом деле новичок в JavaScript. Итак, вот мой вопрос.
Из того, что я узнал. Я могу создать функцию publi c ( getHello ) внутри функции самостоятельного вызова ( Example1 ) и вызвать созданную функцию publi c из другой функции самостоятельного вызова ( Пример 2 ), как показано ниже: -
// 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 с любыми другими функциями самовывоза, если я создаю функцию publi c для включения обмена данными.
Во всяком случае, с учетом этого. Я подумал, почему бы мне не создать выделенную самовывозную функцию для обработки любого извлечения данных из API . Поэтому для этого мне нужно поместить asyn c в функцию самостоятельного вызова, чтобы использовать 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 не является функцией" .
Я попытался найти ответ или любое объяснение в Google. Но я не могу найти каких-либо актуальных топи c, обсуждающих то, что я просто иллюстрирую здесь.
Так что вопросы будут; -
1) Может ли асинхронная c функция самовызова вообще вернуть функцию publi c? или я не должен или не рекомендовал бы делать это вообще?
2) Если можете / не можете, то почему?
Любая помощь будет признательна!