如何解决这个卑鄙的诺言

时间:2019-07-10 21:16:09

标签: javascript sqlite electron

我正在尝试利用单个HTML页面来从sqlite数据库动态填充内容。该查询是通过带有Knex的Electron执行的,并由Electron传递到HTML页面。问题是,当我注销用户页面并以其他用户身份登录时,该数组仍保留在第一个登录屏幕中,因此它也填充了前一个用户的所有图块。我相信这与承诺没有得到解决有关,但我不确定。

我试图用各种方法来解决这个问题,一种方法是通过附加HTML数组,还可以在调用注销函数时清除DIV内容,但是我认为问题在于Knex查询和Promise

function loadTiles(roleSelection) {
  let refTiles = knex({roleSelection}).select('RefTiles');
  refTiles.then(function(userTiles){
    newWin.webContents.send('user:tiles', userTiles);
    newWin.webContents.send('ref:name', roleSelection);
  });
};

HTML页面使用以下脚本接收此查询:

document.addEventListener("DOMContentLoaded", function (){
    ipcRenderer.send('TemplateWindowLoaded');
    ipcRenderer.on('user:tiles', (event, userTiles) => {
        console.log(userTiles);
        for (var c in userTiles) {
        var containerElement = document.getElementById('main');
        var refTile = document.createElement('div');    
        refTile.id = userTiles[c]; refTile.className = "modal-btn";
        refTile.innerHTML = userTiles[c].RefTiles;
        containerElement.appendChild(refTile);
        }    
    });
    ipcRenderer.on('ref:name', (event, roleSelection) => {
        var user = document.getElementById('userName');
        user.innerHTML = "";
        user.innerHTML += roleSelection;
    });
});

我希望兑现这一诺言,以便在对该函数进行新调用时将返回一个新查询。

0 个答案:

没有答案