第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

調(diào)用組件時(shí)的競(jìng)爭(zhēng)條件

調(diào)用組件時(shí)的競(jìng)爭(zhēng)條件

慕田峪7331174 2022-05-26 16:52:17
我有 2 個(gè)組件正在加載到“應(yīng)用程序”中,第一個(gè)組件通過(guò)進(jìn)行 2 個(gè) axios.get 調(diào)用將外部 IP 地址解析為地理地址,然后將它們(通過(guò)發(fā)射)返回給 App.vue。然后我調(diào)用“天氣”來(lái)解析從前 2 次調(diào)用到由 darksky API 返回的那個(gè) lat/long 的一些 json 的 lat/long。有時(shí)(50-60% 的時(shí)間)我遇到了一個(gè)競(jìng)爭(zhēng)條件,我將 0/0 發(fā)送到天氣(這是我在 App.vue 中初始化 lat/long 的內(nèi)容)并且不知道如何解決它。我希望以下代碼能夠更可靠地運(yùn)行。應(yīng)用程序.vue<template>  <div id="app">        <img alt="Vue logo" src="./assets/logo.png">    <ip @response="onResponse" /> //Needs to finish before next line runs (has axios calls)    <Weather msg="The weather for:" :lat="lat" :long="long" :ip="ip" :city="city" :country="country"/>  </div></template><script>import Weather from './components/Weather.vue'import ip from './components/ip_resolve.vue'export default {  name: 'App',  data() {    return {      lat: 0,      long: 0,      ip: 0,      country: 0,      city: 0     }  },  components: {    Weather,    ip  },  //Accepts emitted values from ip_resolve -- needs to change values in data before Weather runs  methods: {    onResponse(event) {      this.lat = event.lat      this.long = event.long      this.ip = event.ip      this.country = event.country      this.city = event.city    }  }}</script>
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

通常,您會(huì)使用 vuex 之類的東西將此模型邏輯分離到自己的模塊中,因此組件的數(shù)據(jù)流是完全單向的。


但在這種情況下,最簡(jiǎn)單的解決方案是在 App.vuev-if="responseReady"中向組件添加指令,<Weather>以便在數(shù)據(jù)準(zhǔn)備好之前它不會(huì)被掛載。您還需要為這個(gè)新道具添加一個(gè)布爾標(biāo)志到dataand onResponse。同樣,這是快速而骯臟的解決方案。


  <Weather v-if="responseReady"  msg="The weather for:" :lat="lat" :long="long" :ip="ip" :city="city" :country="country"/>

...

  data() {

    return {

        lat: 0,

        long: 0,

        ip: 0,

        country: 0,

        city: 0,

        responseReady: false

      }

    }, 

...

    onResponse(event) {

      this.lat = event.lat

      this.long = event.long

      this.ip = event.ip

      this.country = event.country

      this.city = event.city

      this.responseReady = true;

    }


查看完整回答
反對(duì) 回復(fù) 2022-05-26
  • 1 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)