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
を介してインスタンスの参照を開始できます。val
val.a == 1
jQuery の Deferred Object ( $.Deferred
) に目を通すように努力しましたが、私の理解は失われていますが、締め切りが迫っているので、数日後ではなく今すぐ知りたいのです。の取得とインスタンスのbar
追跡val
。
ヘルプ、ポインタ、またはコメントは大歓迎です!