本机浏览器承诺在加载后调用自身

时间:2015-12-23 19:48:54

标签: javascript promise

我在浏览器的承诺中使用本机烘焙....这个特别的是chrome atm。

我的问题是,在我手动调用它之前,它会在加载后立即调用。由于dom还没有准备就绪,这会导致错误。

为什么这个承诺会在加载js文件后立即调用?

var noNameFoo = new Promise(function(resolve, reject) {
  rippleElement = document.getElementById('ripple-element');
  toolbar = document.querySelector('#main-toolbar');
  headerName = document.getElementById('name-title');
  panel = document.getElementById('dad');
  drawer = document.querySelector('paper-drawer-panel');
  mainPanelContent = document.getElementById('mainPanelContent');

  //elements is not routing list, routing list is elementList
  var elements = [rippleElement, toolbar, headerName, panel, 
      drawer, mainPanelContent];

  console.log(elements);
  var completed = elements.every(function(el) {
    if (el !== null && typeof el !== 'undefined' && el.nodeType === 1) {
      return true;
    } else {
      return false;
    }
  });

  if (completed) {
    resolve();
  } else {
    var errMsg = 'error in querying elements';
    reject(errMsg);
  }
});

1 个答案:

答案 0 :(得分:1)

承诺是价值的代理。您正在调用promise构造函数 - 并且该代码将执行。就像你写[alert(5)]一样,它会立即运行警报。

承诺不是行动 - 它只是价值。如果你想要动作 - 将它包装在一个函数中。