我在浏览器的承诺中使用本机烘焙....这个特别的是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);
}
});
答案 0 :(得分:1)
承诺是价值的代理。您正在调用promise构造函数 - 并且该代码将执行。就像你写[alert(5)]
一样,它会立即运行警报。
承诺不是行动 - 它只是价值。如果你想要动作 - 将它包装在一个函数中。