Javascript 仅在上一个函数完成后重新渲染
我正在使用一个api获取进入变量的数据数组。填充数组需要一段时间,然后使用以下命令将此数组传递到res.render文件:Javascript 仅在上一个函数完成后重新渲染,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我正在使用一个api获取进入变量的数据数组。填充数组需要一段时间,然后使用以下命令将此数组传递到res.render文件: setTimeout(function(){ res.render("page", {searchArray: searchArray}) }, 7000); 这是最后一行,但有一半的时间在数组填充之前呈现页面,这会导致错误。填充数组所需的时间取决于用户选择搜索的元素数量。是否有一种方法可以仅在填充阵列后运行渲染,而不必硬编码像7000这样的随机时间 编辑: 这是完整的代
setTimeout(function(){ res.render("page", {searchArray: searchArray}) }, 7000);
这是最后一行,但有一半的时间在数组填充之前呈现页面,这会导致错误。填充数组所需的时间取决于用户选择搜索的元素数量。是否有一种方法可以仅在填充阵列后运行渲染,而不必硬编码像7000这样的随机时间
编辑:
这是完整的代码,必须将7000改为20000,因为7000在数组填充之前渲染页面的速度太快
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来猜测前几行何时将完成任务。您所要做的就是将
渲染
放入已解决的承诺中。因为then
方法是在查询完成后调用的
searchApi.query(queryOptions).then(searchArray => {
res.render("SearchResults", {searchArray}) }
});
你所要做的就是把
渲染成。因为then
方法是在查询完成后调用的
searchApi.query(queryOptions).then(searchArray => {
res.render("SearchResults", {searchArray}) }
});
如果在获取获取结果后呈现页面呢?请向我们显示所有相关代码,包括填充数组的异步代码。您不应该在此处使用setTimeout()
。您应该使用适当的异步回调或承诺,以便在实际完成时可以重新编译。如果您向我们展示其余的相关代码,我们可以建议您正确的编码方式。使用异步/等待或回调。检查这里好的我添加了完整的代码,我尝试使用.then()读取该链接,但我不断收到错误获取结果后是否呈现页面?请向我们显示所有相关代码,包括填充数组的异步代码。您不应该在此处使用setTimeout()
。您应该使用适当的异步回调或承诺,以便在实际完成时可以重新编译。如果您向我们展示其余的相关代码,我们可以建议您正确的编码方式。使用异步/等待或回调。检查这里好的,我添加了完整的代码,我尝试使用.then()读取该链接,但我不断出错