【发布时间】:2018-05-23 16:29:37
【问题描述】:
我正在尝试创建一个分析某些数据的程序。我使用 node.js 从互联网收集的数据。我很难接受代码是异步的这一事实,因此我遇到了很多错误。
我知道它根本没有效率,但是有没有办法同步编写整个代码?
*我使用了很多 Promise 并修补了很多错误,但我仍然不断遇到错误,因为代码是异步的,而且我已经厌倦了思考让我的代码工作的创意。
【问题讨论】:
-
大多数异步函数都有 API,因此您可以传递要调用的回调。你试过了吗?
-
您可以查看自 nodejs 7.6 (infoq.com/news/2017/02/node-76-async-await) 以来支持的
async/await构造。您的代码看起来像同步和异步函数,如果使用await前缀调用,将有效地暂停调用者执行,直到它完成。 -
您是否考虑过 Javascript 在这里可能是一种糟糕的选择语言? Python 或 PHP 可能更合适
-
@AndrewStarostin 另外
async/await不会将 Node.js 变成一个同步平台,它只是看起来同步。您仍然需要了解底层的异步概念。 -
如果您从互联网获取数据,那么最好使用 Promise,可能有一种阻止 xmlhttprequest 的方法(不确定现在是否已完全删除),它不会阻止您在节点中的浏览器应用程序,但您的代码运行速度可能会慢很多。如果您了解为什么使用 Promise 以及您编写的代码如何是非阻塞的(任何函数都会立即返回一个值),那么它确实会变得更容易。请记住,
async不会在新线程上运行,await函数将立即返回一个承诺,它们不会等待任何东西。 stackoverflow.com/a/47678417/1641941视频链接很好。
标签: javascript node.js asynchronous synchronous