私は自分の実際のページで問題を模倣したテストページを作成しました。jQuery 1.5:DeferredオブジェクトがUNRESOLVED状態の.done()を呼び出すのはなぜですか?
doSomething2()
のように、dfdオブジェクトは意図的に解決されません。ただし、次のコードを実行すると、doSomething()
の.done()
が常に発生します。コンソールを調べると、は、.done()
が実行される直前にfalseであることがわかります。
洞察?すべてのヘルプは
<!DOCTYPE html>
<html>
<head>
<title>Testing Page</title>
<script src="jquery-git-02092011.js" type="text/javascript"></script>
</head>
<body>
<div id="test">
<div ></div>
<div ></div>
</div>
<script>
function doSomething() {
$('#test div').each(function(){
$(this).append($('<div></div>').load('http://www.google.com',function(){
doSomething2().done(console.log('dosomething2 is complete'));
}))
});
}
function doSomething2() {
var dfd = $.Deferred();
console.log(dfd.isResolved());
return dfd;
}
$(document).ready(function() {
doSomething();
});
</script>
</body>
</html>
編集を高く評価されています 私はこの関数は何も達成していないことを理解しています。私はちょうど私の問題を再現するための例を作った。 「google.com」を取得することがSOPに反対していることはわかります。私はちょうど私の問題を複製するこの例を作成しました。私は、1つのhtmlファイルからローカルに実行するWebアプリケーションを開発しています。この場合、SOPは厳密に遵守されていないので、少なくともテストするには大丈夫です。
編集:私はこの動作をテストするためにjsfiddleを作成しました:http://jsfiddle.net/Sgwpv/2/
ゲットしました!助けてくれてありがとう – ampersand