问题标签 [node-promisify]

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.

0 投票
0 回答
62 浏览

javascript - 在代码中完成时 HTTP 请求不起作用

我正在提出请求,一切都正确,但我遇到的问题是我不断收到 404 错误。但是如果我将具有相同 url 的参数和正文复制到邮递员,它会返回成功。我不知道我做错了什么。

0 投票
1 回答
147 浏览

javascript - 使用 Node JS utility.promisify() 调用不会从异步回调方法中返回

我正在尝试使用 node js promisify 将回调转换为 promise inoreder 以在异步回调函数上使用 await。

我尝试了不同的方法来传递参数并放置记录器

我期望输出为 3 1 null 'mayank IBM' 2 null 'mayank IBM'

我得到的输出为 3 1 null 'mayank IBM'

0 投票
3 回答
1639 浏览

javascript - 无法承诺基于回调的函数

我想使用库astro-js,他们的文档中的典型调用如下所示:

出于几个原因,我想使用 async/await 样式并利用 try/catch 来使用它。所以我尝试了这样的承诺:

但是,当我记录结果时,它是未定义的。我知道调用有效,因为库通过 console.log 自动记录响应,并且我在日志中看到了正确的响应。

我怎样才能“等待”这个电话?(即使通过其他方式,如果这个不是“可承诺的”)

0 投票
2 回答
941 浏览

node.js - 类型可以被promsified的函数

我正在努力向node-vagrant NPM 库添加单独的类型以在 Typescript 中使用,以在 DefinitiveTyped 下贡献。但是,库的方法之一是promisify,它使库中的所有其他函数返回一个承诺而不是回调。

鉴于我只能控制添加键入(.d.ts)文件,有没有办法表明tsc调用该自定义 promisify 函数的结果是在函数上,或者是其他一些动态机制?或者只是我为函数的两种用法提供了类型,而用户必须确保他们选择正确?

一个最小的例子是 JS 文件是:

我的打字(在.d.ts文件中)是:

现在,当我使用打字时:

最后一行在 TSC 中引发错误。解决方案是在函数签名上同时声明回调和承诺,并让最终用户适当地决定使用哪一个,或者 TypeScript 中是否有某种机制来动态切换函数的返回信息?

综上所述,最后的判决只是在做:

并且如上所述,只是让最终用户弄清楚他们想要回调还是承诺?

0 投票
1 回答
56 浏览

javascript - Promise 在它应该捕获错误时解决

我有一个简单的 node+express 应用程序,如果您访问某个页面,它会发出一些异步 http/get url 请求。这是为了简单地从数据库中获取一些数据,并将其发送到视图。路由使用标准的单独routes.js文件进行处理。

routes.js

http url 请求使用控制器文件处理,该文件对数据库进行查询,并返回值或错误。

controller.js

控制器工作正常,但我故意输入了错误的 get url,以便控制器将res.status(400)...对象返回到路由。无论我返回什么路线,承诺都会解决。我什至尝试返回 a new Error('Error description'),但 promisify 将其作为解决方案接收。

任何帮助将不胜感激!

--

控制器对路由的响应是一个冗长的对象

0 投票
0 回答
272 浏览

node.js - Express 中间件的 Promisify

如何承诺功能是什么Express middleware(例如authenticate(arg1, arg2)(req, res, next))?

util我尝试了 from和 from的promisify 方法,es6-promisify但这些都不起作用。我收到错误:

TypeError: authenticate(...) is not a function

当我做:

const authenticate = promisify(passport.authenticate);

( passport.authenticate) 是中间件。

我的实际问题是: 我正在使用passport-jwt模块,passport并且我想将passport.authenticate中间件作为正常isLoggedIn功能重用。当有此功能时,我不想使用相同的功能来检查 JWT。另外我不想手动承诺这个中间件,因为我会在很多地方做它并且它的代码重复。

0 投票
0 回答
191 浏览

node.js - Nodejs:覆盖 global.eval

有什么方法可以安全地覆盖 eval 吗?试过直接覆盖:

这以某种方式给出了以下参考错误:

ReferenceError:未定义 createCallback

注意:这里的错误不是在覆盖时产生的,而是在某些调用 eval 时产生的。在其他情况下,这完全符合预期。

请在此处找到问题重现代码:https ://runkit.com/embed/8hv0yp94on8s

0 投票
1 回答
130 浏览

node.js - 为什么 promisify 会导致循环花费更长的时间?

我有一个应用程序,它必须从视频中提取颜色信息,它通过分析每一帧来做到这一点。首先,我提取帧,然后将它们的位置数组加载到内存中。正如您可能想象的那样,即使是一个小视频也可能有数千个。

我用来提取每个帧颜色信息的函数是一个承诺,所以我选择批量处理一组承诺Promise.all

对于每个文件的绝对路径,我读取文件,fs然后将其传递以进行处理。我已经使用许多独立图像完成了此操作,并且知道该过程只需要大约一秒钟,但突然间处理一张图像需要将近 20 分钟。我终于发现使用promisifyonfs.readFile是造成瓶颈的原因。我不明白的是为什么?

在第一个fs.readFile中,在返回的 Promise 中进行了转换,而在第二个fs.readFile中,它只是像往常一样使用,我等待 resolve 被调用。我不介意使用无承诺的,我只是好奇为什么这会导致这么慢?

我停止使用promisify该应用程序的第二秒速度恢复到 1 帧/秒

慢代码:

快速代码:

0 投票
1 回答
660 浏览

node.js - 创建寄存器:TypeError:'instanceof' 的右侧不可调用 Express 和 Promisify

以下代码向我显示了错误:

TypeError:'instanceof' 的右侧不可调用

es6-promisify图书馆似乎有问题

0 投票
1 回答
144 浏览

javascript - Promisify 没有对象实例

getConnection如果我们已经创建了池,我们可以 promisify mysql 池功能,如下所示:

用法可以是:

如何保证mysqlPool.getConnection.query函数使用connection变量?做这样的事情:

问题是我不知道如何将connection变量传递给 promisify 函数。我想一种不同的方法是创建一个带有getConnectionPm函数的连接对象,然后将查询绑定到该对象,就像我们为getConnection自己承诺所做的那样。但是我们如何才能实现类似上面的代码呢?

例如,下面的代码给出了一个未定义的错误: