2016-07-01 11 views
-1

以下に示すように、私は、オブジェクトの任意の配列を持っている:のJavaScript ES6の約束 - 未定義の変数

let PAGES = [ 
    new BasePage(
    'home', 
    'test') 
]; 

let pagesPromise = Promise.resolve(PAGES); 

私は今、以下のメソッドを呼び出すことによってBasePageオブジェクトを返すようにしようとしています。

getPageByPage(name: string): BasePage { 

    let page: BasePage; 

    pagesPromise. 
    then(pages => page = pages.find(p => p.name === name)); 

    return page; 

} 

変数pageは定義されていません - 私はこの問題を回避するかどうかはわかりません。さらに、私が約束の原則を濫用しているかどうかもわかりません。

答えて

0

return pageは、ページの解像度の前に実行されます。変数pageには、それを呼び出す解像度関数の.findの結果のみが含まれます。

pagesPromise. 
    then(pages => page = pages.find(p => p.name === name)). 
    then(() => console.log(page));