仅在上一个功能完成后重新渲染

问题描述 投票:1回答:1

我正在使用api来获取进入变量的数据数组。它需要一段时间来填充数组,然后使用以下方法将该数组传递到res.render文件:

setTimeout(function(){ res.render("page", {searchArray: searchArray}) }, 7000);

那是最后一行,但是它在填充数组之前呈现页面的一半时间,这会导致错误。填充数组所需的时间取决于用户选择搜索的元素的数量。有没有一种方法可以在阵列填满后仅运行渲染,而不必像7000这样的随机时间进行硬编码?

编辑:

这里是完整的代码,因为数组填充之前7000渲染页面太快,所以不得不将7,000更改为20,000

app.post("/search", isLoggedIn, function(req,res){
  var searchArray;

  queryOptions = {
  query: req.body.query,
  location: req.body.city + ", " + req.body.state,
  radius: '25',
  sort: 'date',
  limit: req.body.limit
  };

  searchApi.query(queryOptions).then(res => {
    setTimeout(function(){ searchArray = res; console.log("Search array done!") }, 10);
  });

  setTimeout(function(){ res.render("SearchResults", {searchArray: searchArray}) }, 20000);
});

我想避免使用settimeout来猜测前几行何时完成其任务。

我正在使用api来获取进入变量的数据数组。它需要一段时间来填充数组,然后使用以下命令将该数组传递到res.render文件:setTimeout(function(){...

javascript node.js express ejs
1个回答
0
投票

您要做的就是将render放入已解决的承诺中。因为在查询完成后将调用then方法。

© www.soinside.com 2019 - 2024. All rights reserved.