我正在使用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(){...
您要做的就是将render
放入已解决的承诺中。因为在查询完成后将调用then
方法。