イメージ要素を作成し、イメージ属性をチェックしてからtrue/falseを返す単純なテストを作成しようとしています。問題は、onloadイベントを使用するとテストが非同期になることです。それは自分自身では問題ではありません(私は以下のコードで簡単にコールバックを使用しています)が、私が理解できないのは、ブール値を返す単一の関数にこれをカプセル化する方法です。非同期イベントとそのコールバックをブール値を返す関数にラップすることはできますか?
私は、クロージャ、再帰、および自己実行機能のさまざまな組み合わせを試みましたが、運がなかった。
質問:私は高密度で単純なものを見落としているのですか、実際にはこれは実際には不可能です。なぜなら、私はまだ同期的な期待で非同期関数をラップしようとしているからです。
は、ここでは、コードです:
if (supportsImage) {
//Do some crazy stuff
}
ありがとう:私が欲しいものを、明確にするため
var supportsImage = function(callback) {
var img = new Image();
img.onload = function() {
//Check attributes and pass true or false to callback
callback(true);
};
img.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
};
supportsImage(function(status){
console.log(status);
});
それは次のように使用することができるような何かでこれをラップすることができることです!
(ところで、私は、非同期対同期についての混乱に関するSOの質問のトンがある知って謝罪これは以前答えたものに減少させることができる場合。。)
ありがとうございます。コールバックの中にある「ものをすること」は、私が現在やっていることですが、コールバックに渡された結果を分離する方法があるかどうか不思議でした。私はそれが可能だとは思わなかったが、それを受け入れる前に尋ねたいと思った。 =) –