在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ ajax同步還是異步?

ajax同步還是異步?

前端開發(fā)接觸有一段時(shí)間了,一直想搞明白一個(gè)關(guān)于ajax同步異步的問題,異步無法確保數(shù)據(jù)A成功返回,需要用到A的地方就無法進(jìn)行相應(yīng)處理;若使用同步請(qǐng)求,則失去異步請(qǐng)求快速不等待的優(yōu)點(diǎn),程序在值被返回后繼續(xù)執(zhí)行。
我的想法是,有些js框架可以監(jiān)聽對(duì)象屬性,可以一些依賴返回?cái)?shù)據(jù)的函數(shù)放在監(jiān)聽函數(shù)中,當(dāng)監(jiān)聽的屬性有值以后再執(zhí)行。
不知道有沒有其他的比較好的處理方式,有相同疑惑的可以一起討論,希望大神們不吝相告啊

回答
編輯回答
逗婦乳
異步無法確保數(shù)據(jù)A成功返回,需要用到A的地方就無法進(jìn)行相應(yīng)處理

這個(gè)只有很少的情況會(huì)遇到。與這個(gè)缺點(diǎn)相比,同步會(huì)讓頁面失去響應(yīng)的缺點(diǎn)明顯更嚴(yán)重。現(xiàn)在已經(jīng)不再鼓勵(lì)使用同步了。

其實(shí)結(jié)合Promise,異步的處理也可以簡(jiǎn)化很多。

2018年6月6日 06:39
編輯回答
朕略傻

不知道是不是你需要的。jquery 有一個(gè)deffered對(duì)象。

$.when($.ajax("/echo/html/"), $.ajax("/echo/xml/"))

  .done(function(){ alert("哈哈,成功了!"); })

  .fail(function(){ alert("出錯(cuò)啦!"); });
2017年5月6日 06:13
編輯回答
短嘆

不考慮async等語法的前提下。

  1. 異步本來就沒返回值(或者說返回值不是你想要的結(jié)果),你的意思應(yīng)該是無法保證異步請(qǐng)求返回?cái)?shù)據(jù)與其他邏輯的順序吧。
    然而異步操作一般都是和回調(diào)函數(shù)綁定使用的,所有依賴返回結(jié)果的方法都要在回調(diào)函數(shù)中進(jìn)行,你當(dāng)然可以把返回結(jié)果在回調(diào)中賦值給外層變量。
    同時(shí)你說的監(jiān)聽對(duì)象屬性等,本身也是個(gè)異步操作,只不過是將原本函數(shù)回調(diào)中的一些職責(zé)轉(zhuǎn)移到了監(jiān)聽的回調(diào)里,因?yàn)槟惚緛砭涂梢栽谠竞瘮?shù)的回調(diào)中進(jìn)行這些依賴返回值得函數(shù)的調(diào)用。
  2. 同步ajax請(qǐng)求用的比較少,唯一用過一次是在做訪問記錄時(shí),頁面關(guān)閉前確保請(qǐng)求發(fā)送成功時(shí)。
2018年4月26日 14:55
編輯回答
拽很帥

你需要得到返回?cái)?shù)據(jù)再處理,可以放在ajax請(qǐng)求成功后,處理需要A數(shù)據(jù)的邏輯,回調(diào)函數(shù),Promise都是解決辦法

2017年2月2日 06:13
編輯回答
還吻

加載數(shù)據(jù)時(shí)可以給一個(gè)加載動(dòng)畫, 加載成功后刷新顯示, 加載失敗給出相應(yīng)提示

    load() {
      // 開始加載動(dòng)畫
      ajaxFetchData()
        .then(data => {
          // 渲染界面
        })
        .catch(err => {
          // 錯(cuò)誤提示
        })
        .finally(() => {
          // 結(jié)束加載動(dòng)畫
        });
    }
2018年4月25日 16:26
編輯回答
拼未來

綜合各位的回復(fù),很有收獲。也怪自己好久沒去翻jquery API了??傊?,謝謝各位 :)

2017年10月16日 22:52