鍍金池/ 問答/HTML/ vue 中 axios要如何做同步機(jī)制

vue 中 axios要如何做同步機(jī)制

axios 好像不能想jquery那樣,設(shè)置async來實(shí)現(xiàn)同步請(qǐng)求,這導(dǎo)致我實(shí)現(xiàn)一些邏輯帶來的困難。

methods: {
    funcA() {
        axios.post(
            // 在請(qǐng)求成功后,把屬性a賦值
        )
        return a
    }
}

如果我有類似上面的需求,我要在請(qǐng)求完成后,對(duì)數(shù)據(jù)進(jìn)行賦值,然后在后面的語(yǔ)句中要操作數(shù)據(jù),比如返回它。如果是同步機(jī)制,那么最后我可以成功返回a的值,但是axios是異步的。
把需求寫在請(qǐng)求的回調(diào)里面是不行的,如果我要返回這個(gè)值,只是這個(gè)請(qǐng)求調(diào)用返回,對(duì)于整個(gè)函數(shù)來說沒有返回,這真的很難受,有沒有什么解決方案?回調(diào)真的不行。

回答
編輯回答
雅痞

你需要衡量一下自己的思路有沒有問題,為什么一定要返回值?
我覺得你可能需要從頭學(xué)習(xí)

2018年8月25日 07:38
編輯回答
巫婆

是否可以說下你的代碼邏輯?還真沒見過異步回調(diào)解決不了的問題,如果一定要同步的話,async+await了解下?

2017年3月10日 12:54
編輯回答
司令

統(tǒng)一回答一下吧,我知道這樣的需求有點(diǎn)詭異,因?yàn)橐郧坝胘Query,是可以這樣的,執(zhí)行請(qǐng)求,同步卡住,請(qǐng)求完成賦值一些數(shù)據(jù),然后在下面的代碼中去操作這些數(shù)據(jù)。 但是axios不行了,我查了一些資料也有很多人說就算是jquery也還是不要用同步的。
其實(shí)我的需求非要寫在回調(diào)里面也不是不行,只是想看看能不能像原來這樣去操作(也是不想在回調(diào)里面寫太多邏輯,要抽離就要封裝)。
測(cè)試了用async語(yǔ)法是可行的。我相信肯定有人以前用jQuery肯定有這樣做過,熬到vue了換個(gè)思路吧。

2017年8月1日 15:13
編輯回答
逗婦惱
 funcAsync () {
      // fetch data
      return this.$axios.post('')
    }

    funcDoSomeThing () {
      this.funcAsync().then(res => {
          // do some thing
      })
    }

將獲取數(shù)據(jù)的函數(shù)return 出來不就行了

2017年11月10日 00:29
編輯回答
吃藕丑
methods: {
    async funA(){
        var res =  await axios.post('')//這里的res就是你axios請(qǐng)求回來的結(jié)果了
    }
}
2018年8月27日 18:02