JavaScript ES6承诺使用Angular2 - 未定义的变量

时间:2016-07-01 01:01:42

标签: javascript typescript angular ecmascript-6

我有任何对象数组,如下所示:

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未定义 - 我不确定如何解决此问题。此外,我也不确定我是否滥用承诺原则。

1 个答案:

答案 0 :(得分:0)

return page在pagesPromise解析之前执行。变量page将仅包含调用它的分辨率函数中的.find的结果...

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