jQuery の AJAX 関数以外に、「非同期」 JavaScript についての理解は非常に限られています。
物事を整然と軽量に保つために、外部の Javascript ファイルを「モジュール」としてロードするシステムを作成しました。これを行うための主なインスピレーションと実装は、ここにあります。
したがって、たとえば、 と呼ばれる JS ファイルにはfoo.js、属性が設定された次の JS オブジェクトが含まれる場合があります。
var bar = {
a:1,
b:2
}
この外部ファイルがロードされると、それ以降はアクセス可能にwindow.barなります。そのため、ブラウザーの Developer Tool JS コンソールにwindow.bar.a(または)と入力すると、次のように返されます。bar.a
1
オブジェクトを変数に割り当てようとすると問題が発生しbarます。これは、多くの場合、外部 JS モジュールがロードされ、通常はundefined-boo!が含まれる前に同期的に解決されます。
これはこれまでの私の試みです: 基本的に、オブジェクト インスタンスが に既に存在する場合はそれを返しますwindow。それ以外の場合は、読み込まれるのを待ってから返します (理想的には)。
var val = getInstance('bar');
私の関数を呼び出す:
function getInstance(name) {
if(typeof window[name] === 'object'){
return window[name];
} else {
$(window).on('load', window[name], function() {
return window[name];
});
}
}
undefinedもちろん、これはI のときに返されますconsole.log(val)。
barここで、オブジェクトが非同期で に到達することを期待していることを知っていますval。次に、 (つまり)barを介してインスタンスの参照を開始できます。valval.a == 1
jQuery の Deferred Object ( $.Deferred) に目を通すように努力しましたが、私の理解は失われていますが、締め切りが迫っているので、数日後ではなく今すぐ知りたいのです。の取得とインスタンスのbar追跡val。
ヘルプ、ポインタ、またはコメントは大歓迎です!