обещание формы возврата IONI C 5 - PullRequest
0 голосов
/ 16 июня 2020

Я новичок в IONI C У меня есть следующая функция, которая возвращает план членства.

  async getMembership(){
       await this.Products.WooCommerceAPI().get('memberships/plans').then( (data) => {
       this.plans = data.data.map(e => ({

       // used spread method here to call another function that gets the price 
        ...e,
        price: this.getPlanPrice(e.access_product_ids[0]).then(async (res) => {
          return  await res;
        }),
      }));
    }).catch((error) => {
      // Invalid request, for 4xx and 5xx statuses
      console.log('Response Status:', error.response.status);
      console.log('Response Headers:', error.response.headers);
      console.log('Response Data:', error.response.data);
    })
    .finally(() => {
      // Always executed.
    });
    console.log(this.plans);
  }

в этой функции я использовал другую функцию, которая получает цену каждого членства, используя метод ... распространения.

    async getPlanPrice(id): Promise<any> {
    if (id !== undefined) {
      return await this.Products.WooCommerceAPI().get('products/' + id).then(data => {
        return data.data;
      });
    } else {
      return 0;
    }
  }

но проблема в

price: this.getPlanPrice(e.access_product_ids[0]).then(async (res) => {
          return  await res;
        }),

возврат этой части [Object Promise] Я все перепробовал, но не могу получить цену, например 500 за обещание этого объекта.

1 Ответ

0 голосов
/ 16 июня 2020

Вам нужно получить результат обещания, прежде чем назначать его как свойство объекта, даже если вы его используете, он остается как обещание. Что-то вроде этого должно работать:

 await this.Products.WooCommerceAPI().get('memberships/plans').then( (data) => {
       this.plans = data.data.map(e => {
           const price = await this.getPlanPrice(e.access_product_ids[0]);
           return {...e, price}
       });
...