问题标签 [asynchronous-javascript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 语法错误:下面的代码有什么问题
帮我解决以下显示语法错误的代码。我知道肯定有问题。如何借助箭头函数编写以下 checkInventory 订单。
node.js - 从这个承诺返回响应的正确方法是什么?
我正在使用 Jovo Node.js 框架为 Amazon Alexa 和 Google Assistant 平台编写语音优先应用程序。我向外部 API 发出嵌套的 http 请求(第一个调用是获取作为第二个 API 调用的参数所需的资源 ID)。数据返回后,我想向应用程序的用户发送响应。但是,我在测试期间根本没有得到任何回应。
我尝试从同一个 .then() 内部发送响应,我从 API 获取数据并制定响应,我还尝试简单地在一个对象中返回该响应并将另一个 .then() 链接到在我尝试发送响应的地方处理该承诺。这些选项都不起作用。
我在请求处理程序中 console.logged “this”,然后在 .then() 处理第一个 API 调用,在 .then() 处理第二个 API 调用(只是为了确保上下文相同)和它是同一个“这个”。
console.logging 从 API 接收的数据也有效,所以我知道我收到了 API 的响应。我只是无法向用户发送回复。
下面是我的代码:
javascript - 在 setState 更新状态之前调用渲染
有什么方法可以确保在实际更新状态render
后调用?setState
据我所知,setState
是异步的。我已经尝试将render
回调作为setState
,但它仍然在状态更新之前呈现。
HTML 代码:
反应代码:
基本上,这里发生的事情是首先记录“渲染”,然后是“更新方块:...”,如下所示:
我尝试进行回调setState
render
,但第二次渲染将在第一次渲染之后但在setState
更新之前渲染state
:
它记录了:
任何帮助将不胜感激。提前致谢!
javascript - 我可以在 Javascript 中创建自己的“then()”函数并执行它吗?
我正在阅读有关 Javascript 中的 Promises 的教程。我在很多地方都看到了 then() 方法的用法。
当我编写下面的代码时,我__proto__
在控制台的部分下看到了“then()”函数。
但是当我编写以下代码时,我无法观察到相同的“then()”函数,
then()
所以,我在想,我们可以在 Javascript 中创建自己的函数并执行它吗?
javascript - AWS SDK 等待异步调用完成?
AWS SDK 文档对何时/如何/是否可以同步异步服务调用不是很清楚。例如,这个页面(https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/calling-services-asynchronously.html)说:
通过 SDK 发出的所有请求都是异步的。
然后在这个页面上(https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/using-a-callback-function.html)它说:
此回调函数在成功响应或错误数据返回时执行。如果方法调用成功,则数据参数中的回调函数可以获得响应的内容。如果调用不成功,则错误参数中提供有关失败的详细信息。
它没有说的是如何等待回调函数完成。
例如,这个调用是异步的还是同步的?
在 describeInstances() 返回后,我可以假设回调已被调用吗?如果没有,我怎么能等到它呢?
编辑:
所以我尝试按照建议编写一些异步/等待代码,但它不起作用:
现在我看到它的方式我正在等待等待 Promise p 的 getVal() 的结果,但结果如下:
该脚本只是退出而没有任何外观完成的承诺。
在 Node.js中是否有可能获得异步函数/承诺的返回值?我对这在 Python 中的简单程度感到头疼。
node.js - 如何手动实现背压
我有子进程,因为我正在将流传输到父进程。
在 child.js 中
在 parent.js 中
我的问题是在我将所有文件上传到 s3 流之前结束。我研究了背压,但我不明白如何在这里实现?
我想我需要添加回调或其他东西来处理标准输出管道。我不知道
你能帮我么
node.js - 在 Knex.js 中的 transaction.commit 之后执行插入
我想在完成事务之前在事务中并行执行插入。我使用了 Promise.all() 和 bluebird promises 如果一个失败了就取消所有的promise。问题是承诺似乎在插入实际执行之前就结束了。我正在使用 Knex.js。我有 2 个承诺,一个在 users 表中插入用户的用户名和电子邮件,另一个是加密用户密码并将电子邮件和加密密码插入登录表中。
我找到了执行承诺和插入的顺序。他们以这种方式执行。(插入用户名和电子邮件的承诺得到解决)->(Knex 调试器说运行了用户名和电子邮件的插入命令)->(承诺比插入电子邮件和密码得到解决)->(transaction.commit)->(Knex调试器表示已运行电子邮件和密码的插入命令,但事务已结束并引发错误)。这里的问题显然是在执行电子邮件和密码插入之前执行了电子邮件和密码承诺。
我希望登录表和用户表都被更新,但由于事务提交发生在登录更新被添加到事务之前,因此只更新了用户表。以下是我在 Knex 中使用 debug=true 运行程序时收到的错误消息:
node.js - 无法将 tesseract 函数的结果值存储到异步函数内的全局变量中
我正在使用 tesseract JS 将图像转换为文本格式。转换成功,我可以在控制台中打印出来。但我无法在函数范围之外获取此文本。
我尝试将文本分配给全局变量,然后打印它,但没有任何反应。
需要能够在函数外部获取文本的值,并在另一个异步调用中再次使用它。
javascript - JavaScript 异步函数 Google Sheet API,由于是公式检索,数据可用性延迟?如何克服?
我正在使用 Google Sheets 编写公式gapi.update
,然后立即调用函数 makeApiCall,尝试从该单元格中检索数据,使用gapi.get.
此检索查询的第一次迭代几乎不可避免地返回undefined
,因为公式没有及时处理请求。
我尝试制作一个 for 循环来重复请求,相比之下!==null
,此循环在检索单个响应之前执行 4 次迭代。但是,所需的值通常会在第二次查询后返回到控制台。我还尝试用时间延迟来重写它,这似乎并没有真正休眠,它们只是延迟显示数据。我还尝试使用异步函数 + await + return 进行重写,并设法等待返回未定义但不循环所需数据。
有没有一种简单的方法来延迟请求。还是awit
在每个之间?
我的预期结果是我的全局变量从公式中dataOu
检索,如果不是,它应该重复查询。>null
有没有办法将其编写为适当的异步函数,如果未收到所需的响应,则在该函数中重复请求。或在 for 循环迭代之间建立计时器的方法。这不是一个简单的异步调用,因为它不只是等待响应,而是要检索特定响应。