2017-09-12 10 views
1

私はrenderSelectでPromiseValueを取得しようとしています。 (tmp約束の値を別の関数に返す

私は約束事を得ています。これは正常な動作です。しかし、私はプロミスの中でどのように価値を得ることができるのか分かりません。

私は

handleResponse(response) { 
    if (response.status >= 200 && response.status < 300) { 
    return response.json(); 
    } 
    return response.json() 
    .then((res) => { 
     throw new Error(res.message); 
    }, 
    () => { 
     throw new Error(); 
    }); 
} 


get(url) { 
    return fetch(`${this.API_URL}${url}`, { 
    method: 'GET', 
    headers: this.headers, 
    }) 
    .then(response => this.handleResponse(response)); 
} 

そして、私の.jsx

このような
const getOptions = (contractor_employee_id) => { 
    const apiService = new ApiService() 
    return apiService 
    .get(`some_url`) 
    .then(
     response => { 
     return ["toto", "tata", "titi"] 
    }, 
    err => (console.log("Failed")) 
    ); 
}; 

const renderSelect = (field) => { 
    const tmp = getOptions(field.id) 
    console.log(tmp) 

答えて

2

約束に約束を返すためにJavascriptをPromiseを使用することができます非同期。また、約束の結果を同期的に返すには、async/awaitを使用します。

const renderSelect = async (field) => { 
    const tmp = await getOptions(field.id) 
    console.log(tmp) 
} 
0

を次のようにApiServiceクラスを持っているあなたはrenderSelect

const getOptions = (contractor_employee_id) => { 
    const apiService = new ApiService() 
    return new Promise((resolve, reject) => { 
     apiService 
      .get(`some_url`) 
      .then(
       response => { 
       resolve(["toto", "tata", "titi"]); 
      }, 
      err => (console.log("Failed") reject('failed');) 
      ); 
     }; 

     }) 
} 

const renderSelect = (field) => { 
    getOptions(field.id).then((res) => { 
     console.log(tmp); 
    }) 
} 
関連する問題