搜索

首页  >  问答  >  正文

VueJS 如何在继续之前等待 axios 数据

<p>我有这段代码,它应该将数据解析为变量,然后发送一个发布请求。</p> <p>问题是,我需要 API 中的一个属性,但我不知道如何才能等待它返回。</p> <pre class="brush:php;toolbar:false;">addFieldData(data, generatorData) { this.populateModel(data); console.log(this.model); this.$axios.post('data/webform/fields', this.model) .then(res => { console.log(res); this.$notify({ group: "app", title: this.$t("general.success"), text: this.$t("general.action_has_been_processed"), type: "info" }); }).catch(error => { this.$notify({ group: "app", title: this.$t("general.error"), text: this.$t("general.error_occured"), type: "error" }); console.log(error); }); }, populateModel(data) { this.model.label = data.label ?? {}; this.model.hint = data.placeholder ?? {}; this.model.attributes = data.attributes ?? {}; this.model.maxlength = data.maxlength ?? 0; this.model.position = this.getFieldPosition(); this.model.required = data.required ?? true; this.model.visible = data.visible ?? true; this.model.disabled = data.disabled ?? false; this.model.style_classes = data.style_classes ?? ""; this.model.model = data.model ?? ""; this.model.default = data.default ?? ""; this.model.input_type = data.input_type ?? ""; this.model.hint = data.hint ?? ""; this.model.help = data.help ?? ""; this.model.type = data.type; }, async getFieldPosition() { const res = await this.$axios.get('/data/webform/' + this.idWebform + '/itemsCount'); this.model.position = res.data.data.count + 1; return res.data.data.count; },</pre> <p>在 addFieldData 中,我调用 populateModel,它应该从 API 获取位置,但在 getFieldPosition 返回数据之前调用 post 请求。</p> <p>我想尝试先等待 getFieldPosition,然后发送 post 请求。</p>
P粉520204081P粉520204081497 天前513

全部回复(1)我来回复

  • P粉178132828

    P粉1781328282023-08-27 09:53:30

    首先,您应该拥有 async/await 的所有内容,而无需任何 .then
    不要混合它们两者。使用第一个。

    然后,在您的 async populateModel 方法中,您应该有一个

    this.model.position = await this.getFieldPosition()
    

    因为 getFieldPosition 是异步的。

    回复
    0
  • 取消回复