2016-07-10 5 views
0

以下のcheckB関数で.then定義されていないエラーが発生し続ける。プロパティ.then未定義エラー

export function checkB(accountId) { 
    return new Promise((resolve, reject) => { 
     const myRepo = new myRepo(); 
     myRepo.checkC(accountId).then(results => { 
     return resolve(results)); 
     }); 
    }); 
} 

私はcheckCを呼び出してjsonレスポンスを返すことができます。

checkC(){ 
    const fetchApi = new FetchApi(); 
    const url = `${config.routes.base}/mypath/5`; 
    fetchApi.get(url).then(results => { 
    return results.json().then(json => { 
     return json; 
    }); 
    }).catch(err => { 
    console.log(err); 
    }); 
} 

私はCheckBを呼び出して初期fucntion checkAを()持っている - は、同期CheckAで結果を得るが、CheckBから.then未定義のエラーに実行して維持しようとしています。

誰でも私がここで間違っていることを説明することはできますか?

+2

は 'checkC'は何も返しません... – elclanrs

答えて

4

あなたはcheckC()からPromiseを返す必要があります。

checkC(){ 
    const fetchApi = new FetchApi(); 
    const url = `${config.routes.base}/mypath/5`; 
    return fetchApi.get(url) 
    .then(results => results.json()); 
    .catch(console.log); 
} 

また、results.json()結果を返す約束であるから、あなたは.then(json => {return json;});ことを行う必要はありません。

さらに、一般に、別の約束の結果である約束の結果で何かをする必要がある場合、ネストされたコードを使わずに連鎖することができます。

は、あなたがそのようなあなたの第二の例を書くことができます(それは無用である、最初のコード私はちょうど例のため、細かな作品を書いた):

const fetchApi = new FetchApi(); 
const url = `${config.routes.base}/mypath/5`; 
fetchApi.get(url).then(results => { 
    return results.json(); 
}) 
.then(json => { 
    return json; 
}).catch(err => { 
    console.log(err); 
}); 
関連する問題