Javascript 为什么不在MVC应用程序中的所有操作上使用异步?

Javascript 为什么不在MVC应用程序中的所有操作上使用异步?,javascript,c#,.net,asp.net-mvc,async-await,Javascript,C#,.net,Asp.net Mvc,Async Await,考虑到未来对更大可伸缩性的需求(假设使用率将增加),在开发新应用程序时,在所有操作中使用异步不是很有意义吗 对于get(主要返回视图)和post(将执行一些存储/更新并返回jsonresult)来说,这有意义吗 所有帖子都将使用jqueryajax,这种“双异步”是否有效 该操作是否确实以任何方式从异步使用中获益 如果它确实这样做了,哪怕是轻微的,例如通过点击文件I/O(使用异步)、数据库(使用异步)或Web服务(使用异步),那么这是值得做的 如果它只是CPU受限的,那么它将使事情变得稍微有价

考虑到未来对更大可伸缩性的需求(假设使用率将增加),在开发新应用程序时,在所有操作中使用异步不是很有意义吗

  • 对于get(主要返回视图)和post(将执行一些存储/更新并返回jsonresult)来说,这有意义吗
  • 所有帖子都将使用jqueryajax,这种“双异步”是否有效
该操作是否确实以任何方式从异步使用中获益

如果它确实这样做了,哪怕是轻微的,例如通过点击文件I/O(使用异步)、数据库(使用异步)或Web服务(使用异步),那么这是值得做的

如果它只是CPU受限的,那么它将使事情变得稍微有价值(异步不是免费的),而一无所获

还值得注意的是,如果您将一个操作从异步更改为非异步,或者反之亦然,那么代码更改可能是本地的,因此“我们将来可能需要”没有实际价值。如果您有一个操作,例如,现在只是返回一个没有其他工作的视图(异步中没有值),然后将其更改为命中数据库(异步中的值),那么您可以只更改为异步,这不会是一个复杂的更改

所有帖子都将使用jqueryajax,这种“双异步”是否有效


你是说,在ajax是异步的意义上也是异步的?完全不连接,无论代码的另一部分是否具有零轴承,每个操作都可以是异步的。

该操作是否真的以任何方式从异步使用中获益

如果它确实这样做了,哪怕是轻微的,例如通过点击文件I/O(使用异步)、数据库(使用异步)或Web服务(使用异步),那么这是值得做的

如果它只是CPU受限的,那么它将使事情变得稍微有价值(异步不是免费的),而一无所获

还值得注意的是,如果您将一个操作从异步更改为非异步,或者反之亦然,那么代码更改可能是本地的,因此“我们将来可能需要”没有实际价值。如果您有一个操作,例如,现在只是返回一个没有其他工作的视图(异步中没有值),然后将其更改为命中数据库(异步中的值),那么您可以只更改为异步,这不会是一个复杂的更改

所有帖子都将使用jqueryajax,这种“双异步”是否有效


你是说,在ajax是异步的意义上也是异步的?完全不连接,无论代码的另一部分是否具有零轴承,每一部分都可以是异步的。

Javascript实际上并不异步执行任何操作。如果不使用web workers,则无法编写异步函数。您所能做的就是启动一个进程,例如异步运行的fileReader、XMLHttpRequest、映像/资源加载、setTimeout、setInterval等。这些进程不是javascript。然后,它们在需要时将调用(事件)放在调用堆栈上。它们运行在不同的线程上,可以说与javascript是异步的,但javascript仅限于一个线程,一次只能执行一个函数,一条指令

因此,固有的javascript(不包括web工作人员)不能异步运行。即使是与事件相关联的回调也必须一次处理一个,所有所谓的“异步”事件都会被当前运行的调用阻止。如果不退出,将不会调用调用堆栈上的回调,这将最终导致调用堆栈溢出


调用任何javascript异步都是对javascript代码运行方式的误解。通常被称为“异步javascript”的东西应该更准确地称为“事件驱动”编程。

javascript实际上并不异步执行任何操作。如果不使用web workers,则无法编写异步函数。您所能做的就是启动一个进程,例如异步运行的fileReader、XMLHttpRequest、映像/资源加载、setTimeout、setInterval等。这些进程不是javascript。然后,它们在需要时将调用(事件)放在调用堆栈上。它们运行在不同的线程上,可以说与javascript是异步的,但javascript仅限于一个线程,一次只能执行一个函数,一条指令

因此,固有的javascript(不包括web工作人员)不能异步运行。即使是与事件相关联的回调也必须一次处理一个,所有所谓的“异步”事件都会被当前运行的调用阻止。如果不退出,将不会调用调用堆栈上的回调,这将最终导致调用堆栈溢出


调用任何javascript异步都是对javascript代码运行方式的误解。通常称之为“异步javascript”的内容应该更准确地称为“事件驱动”编程。

使用异步操作可能会产生一些开销,并且应该在需要时使用,而不仅仅是为了使用异步操作。如果返回的是简单视图,则可能不需要它。如果视图在显示之前做了一些繁重的工作,则应该考虑使用AsiNC。从ajax使用异步并不是真正的双异步,是的,它会起作用。关于这个主题的有趣链接:使用异步操作的可能重复有一些开销,应该在需要时使用,而不仅仅是为了使用它们。如果返回的是简单视图,则可能不需要它。如果视图在显示之前做了一些繁重的工作,则应该考虑使用AsiNC。从ajax中使用async并不是真正的双异步,是的,它会起作用。关于这个主题的有趣链接:Oke感谢您,得到了它,大多数视图都包含来自DB的数据,因此async在那里也很有用。只要实际的DB调用可以使用async,yesOke感谢您,大多数视图都包含来自DB的数据,因此,异步在那里也很有用。只要实际的数据库调用可以使用异步,那么对elabor来说,是的