2016-07-01 2 views
-1

У меня есть любой массив объектов, как показано ниже:JavaScript ES6 обещание с Angular2 - неопределенная переменная

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));