鍍金池/ 問(wèn)答/HTML5  HTML/ angular6 httpclient已經(jīng)為字段賦值了,為什么字段一直undef

angular6 httpclient已經(jīng)為字段賦值了,為什么字段一直undefined?

圖片描述

已經(jīng)執(zhí)行到黃色部分了,res['data'].itemMaterialType=3,
this.itemMaterialType = res['data'].itemMaterialType; 這句話已經(jīng)執(zhí)行了,為什么this.itemMaterialType一直是undefined;理論上this.itemMaterialType=3才對(duì)啊;

以下是封裝的方法,

  async searchData() {
    this.itemMaterialType = '4';
    await this.api.Dispatch.queryProcessDetailByProcessId({
      processId: this.processId
    })
      .then(res => {
        this.data = res['data'];
        this.isFeedMaterial = res['data'].isFeedMaterial.toString();
        this.itemMaterialType = res['data'].itemMaterialType;
      });
  }
    queryProcessDetailByProcessId: async (option) => await this.http.getByPromise('/api/ScheduleProcess/GetProcessDetail', option),
  async getByPromise(url: string, params: {}) {
    return await this.http.get(this.domain + url, { observe: 'body', params: params })
      .toPromise();
  }
回答
編輯回答
爛人

1 .then 發(fā)生在獲取數(shù)據(jù)之后, 無(wú)需使用async await

2 獲取res 后 取值 可以直接 使用簡(jiǎn)寫(xiě)使用點(diǎn)語(yǔ)法 res.data

3 api 中 已經(jīng)轉(zhuǎn)換成 promise 后 resolve(數(shù)據(jù)) reject(cache Error) 無(wú)需強(qiáng)制轉(zhuǎn)成 同步

2017年2月17日 21:21
編輯回答
入她眼

this上下文變了。你可以把this打印出來(lái)看看,指向哪里了。

2018年5月21日 07:59
編輯回答
淡墨

VS code調(diào)試狀態(tài)this一直是undefined,但是運(yùn)行都是正常的數(shù)據(jù)也可以顯示;用瀏覽器調(diào)試發(fā)現(xiàn)this也是正常的;巨坑

2018年6月1日 03:26
編輯回答
雨蝶

既然用了sync await ,為什么 又帶then,

2017年11月18日 04:51
編輯回答
還吻

瀏覽器假象,控制臺(tái)打印的不一定就是真實(shí)的。有的時(shí)候this會(huì)出現(xiàn)bug,但是在代碼中用不會(huì)有問(wèn)題。如果代碼中使用的時(shí)候出現(xiàn)了問(wèn)題可以再找原因

2017年2月27日 21:39