關於dojo的ajax回調方法返回資料的範圍

來源:互聯網
上載者:User

      今天有個很簡單的ajax函數,搗鼓了好久才得以解決。問題是這樣的,在ajax中有個回呼函數,會將伺服器端的資料返回,該返回資料的範圍問題,先看程式:

function test() {var num = 1;require(["dojo/request"], function(request){   request("request.html").then(function(data){ num = data; //data = 2   });});alert(num); //1}

      上述例子,num還是1,並沒有改變,我的想法是,data的值根本就沒有賦給num。從網上瞭解到,原來在test()方法已經執行完,ajax的回呼函數可能還沒執行呢。那應該就是同步或非同步問題,查看源碼

defaultOptions = {data: null,query: null,sync: false,method: 'GET',headers: {'Content-Type': 'application/x-www-form-urlencoded'}};

     
 發現,預設情況下sync屬性是false,是非同步傳輸的,那隻要將非同步改掉同步,是不是就可以使用返回資料呢,試試將sync改為true

function test() {var num = 1;require(["dojo/request"], function(request){   request("request.html", {sync: true}).then(function(data){ num = data; //data = 2   });});alert(num); //2}

        結果返回2,說明可以使用了。從中得出:dojo的ajax預設情況下顯然是非同步,但是當有其他需求的時候也可以改為同步的。

     由於剛接觸前端開發,所以一些很簡單的問題也要花不少時間才可以解決,希望可以從這些問題中得到提高。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.