在我的Javascript应用程序中,我有时会发现我需要修改一段最初同步运行的html" target="_blank">代码,并添加一些异步运行的代码。
之前:
function doSomething() {
var x = 0;
...
return true;
}
之后:
async function doSomething() {
var x = 0;
await doSomethingElse();
...
return true;
}
很多时候,这是可以的。但是,如果另一个函数正在调用函数do某物,该函数希望do某物完成并返回结果,就会出现问题。最初代码是同步运行的,所以这不是问题。但是现在我已经为do某物添加了async,它甚至会在do某物调用完成之前立即返回。然而,我不希望do某物返回,直到do某物调用完成,以及后续的任何代码。我能想到的唯一解决方案是修改调用代码来处理do某物作为promise。这样做的问题是,我最终不得不为调用该函数的函数做同样的事情,等等。
有没有办法添加doSomethingElse,使doSomething仍然同步执行?
一篇类似的帖子似乎暗示这是不可能的(但那是3年前的事了。也许从那时起就有了一些东西使之成为可能):
如何阻止一个javascriptpromise并返回解决的结果?
因此,使用它作为普通的promise
doSomething().then(boolean=>{
}).catch(e=>{
})
或
async function other(){
try{
let boolean = await doSomething();
// your other code
}catch(e){
// your error handler
}
}
你唯一的选择就是在以下情况下“开火然后忘记”:
function doSomething() {
var x = 0;
doSomethingElse();
// ...
return true;
}
我正试图将图像上传到firebase存储,但调用该函数时,未执行wait以获取url。我错过了什么? 看看这个其他主题,我发现问题可能是“然后”,但我如何设置代码以等待url? 异步/等待/然后飞镖/颤振 谢谢
问题内容: 我知道这个问题以前曾被问过,但是所有解决方案都不适合我。 我有一个将参数发送到API的函数,并以列表的形式返回数据。我有一个UITableView设置为使用该列表,但是它在列表分配给变量之前运行。 码: 如果不立即将其作为重复投票,我将不胜感激,这是我尝试的方法。 派遣组 信号量计时 运行变量 其中包括= self和= self 。 编辑:要求提取项目, 问题答案: 您不能-也不应该-
我通读了Dart/flatter中的Async/Await/then,试图理解为什么aysnc函数中的Await不会等到完成后再继续。在我的UI中,有一个按钮调用一个异步方法来返回一个位置,该位置总是返回null,并且不等待函数完成。 该函数将调用推送到一个新的UI页面,该页面选择一个位置,并应返回一个结果。如何使该函数等待结果?我不是在使用异步吗?
我使用Java中的创建一个线程池,每个线程在其中执行一些异步任务/调用另一个服务。我不想等待回复,但无论何时回复都会返回。 这样做将等待第一个请求完成,然后返回结果。问题是,第二个请求必须等待第一个请求的响应返回,并且只有在这之后才会被处理。如果我使用CompletableFuture的方法,也会发生同样的情况,因为我还必须使用来获取响应。 我希望所有的请求都经过检查,并在收到时返回回复。这是可以
问题内容: 我的代码在javascript中看起来像这样: 在完成所有这些异步调用之后,我想计算所有数组的最小值。 我要如何等待所有人? 我现在唯一的想法是拥有一个名为done的布尔数组,并在第i个回调函数中将done [i]设置为true,然后说while(不是全部都完成了){} 编辑:我想一个可能但很丑陋的解决方案是在每个回调中编辑完了的数组,然后如果每个回调中都设置了所有其他完成,则调用一个
我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似