2017-11-14 19 views
0

私はこれを乗り越えられません。この問題について読んだスレッドはすべて失敗につながるので、このスレッドでもう一度試してみます。メソッドは、結果を返す前にAJAX呼び出しが結果を返すのを待つ方法を作る方法はありますか?

メソッドでAJAX呼び出しを行う必要があります。私の関数は何かを返す前に私のajaxの結果を待つ必要があります。

私は、遅延がそれを行う正しい方法でなければならないが、それは動作しないことを読んだ。

my_method(); 

function my_method() { 
    var d1 = $.Deferred(); 
    console.log('Start'); 
    $.when(d1).done(function(value) { 
    console.log(value); 
    }); 

    $.ajax({ 
    url: '/echo/js/?js=hello%20world', 
    complete: function(response) { 
     d1.resolve("Done"); 
    } 
    }); 
    console.log('End method'); 
} 

console.log('Outside World'); 

SAMPLEのJSFIDDLE:https://jsfiddle.net/ttx1qp0r/

あなたがために、このコードの出力を見ることができるように: -Start -End方法 -Outside世界 -done

しかし、これは私が欲しいものではありません。私は、アウトサイドワールドが最後に起こることが必要です。

技術的には、同期型のajax呼び出しを作成しようとしていますが、async:falseを使用することは推奨されていません。

私は間違っていますか?私のアプリケーションの流れはこれに依存しています。

おかげ機能であなたの外の世界を包む、その後のようdone後にその関数を呼び出すことについて、どのように

答えて

0

my_method(); 

function my_method() { 
    var d1 = $.Deferred(); 
    console.log('Start'); 
    $.when(d1).done(function(value) { 
    console.log(value); 
    outsideWorld(); 
    }); 

    $.ajax({ 
    url: '/echo/js/?js=hello%20world', 
    complete: function(response) { 
     d1.resolve("Done"); 
    } 
    }); 
    console.log('End method'); 
} 

function outsideWorld() 
{ 
    console.log('Outside World'); 
} 
+0

私はコード「外の世界」へのアクセスを持っていません。私のJSがある時点で注入されるページ全体を想像してください。ページから呼び出された1つの関数しか管理できません。世界の残りの部分を動かす前に私の機能は終了する必要があります。 – D3stroyah

関連する問題