【发布时间】:2017-06-28 20:45:46
【问题描述】:
假设我有以下代码:
同步版本:
var waitingToGetValue = heavyProcessingFunc (para1, para2);
response.send(waitingToGetValue);
我试着环顾四周,但我得到的只是没有参数的函数。
异步尝试:
heavyProcessingFunc(para1, para2, (function(waitingToGetValue){
response.send(waitingToGetValue);
});
我需要将这两个参数发送给函数。该函数返回一个值,我需要使用该值将其发送到响应。
如果我把它放在异步格式中,这有关系吗?谁能向我推荐一个视频/资源,可以轻松解释同步与异步的区别:过去几天我阅读了很多材料,但它对承诺、回调和尝试访问这些函数之外的值越来越感到困惑。
【问题讨论】:
-
同步意味着一切都停止,直到收到响应(通常很糟糕,因为 UI 锁定并在您等待时变得无响应)。异步意味着代码在发出请求时继续处理。这更好,因为 UI 不会被阻塞,但确实会引入不知道响应何时返回的问题。这就是我们需要回调的原因。
-
使函数接受回调并不会使它异步。这取决于函数的作用。例如。
Array#forEach也接受回调,但不是异步的。我不清楚你的问题到底是什么。 -
“异步格式”没有任何帮助。您需要使函数实际上异步执行某些操作,并且如果它只是几轮繁重处理之间的一小段延迟。
-
你的actual problem是什么?
-
@Bergi 真的是两个问题。一个是格式化上面的以下代码。第二个是我可以清楚而轻松地解释有关 javascript 的同步和异步性质的所有内容。丹尼尔回答了第一个问题。
标签: javascript asynchronous synchronous