问题标签 [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.
javascript - 在代码中完成时 HTTP 请求不起作用
我正在提出请求,一切都正确,但我遇到的问题是我不断收到 404 错误。但是如果我将具有相同 url 的参数和正文复制到邮递员,它会返回成功。我不知道我做错了什么。
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'
javascript - 无法承诺基于回调的函数
我想使用库astro-js,他们的文档中的典型调用如下所示:
出于几个原因,我想使用 async/await 样式并利用 try/catch 来使用它。所以我尝试了这样的承诺:
但是,当我记录结果时,它是未定义的。我知道调用有效,因为库通过 console.log 自动记录响应,并且我在日志中看到了正确的响应。
我怎样才能“等待”这个电话?(即使通过其他方式,如果这个不是“可承诺的”)
node.js - 类型可以被promsified的函数
我正在努力向node-vagrant NPM 库添加单独的类型以在 Typescript 中使用,以在 DefinitiveTyped 下贡献。但是,库的方法之一是promisify,它使库中的所有其他函数返回一个承诺而不是回调。
鉴于我只能控制添加键入(.d.ts
)文件,有没有办法表明tsc
调用该自定义 promisify 函数的结果是在函数上,或者是其他一些动态机制?或者只是我为函数的两种用法提供了类型,而用户必须确保他们选择正确?
一个最小的例子是 JS 文件是:
我的打字(在.d.ts
文件中)是:
现在,当我使用打字时:
最后一行在 TSC 中引发错误。解决方案是在函数签名上同时声明回调和承诺,并让最终用户适当地决定使用哪一个,或者 TypeScript 中是否有某种机制来动态切换函数的返回信息?
综上所述,最后的判决只是在做:
并且如上所述,只是让最终用户弄清楚他们想要回调还是承诺?
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 将其作为解决方案接收。
任何帮助将不胜感激!
--
控制器对路由的响应是一个冗长的对象。
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。另外我不想手动承诺这个中间件,因为我会在很多地方做它并且它的代码重复。
node.js - Nodejs:覆盖 global.eval
有什么方法可以安全地覆盖 eval 吗?试过直接覆盖:
这以某种方式给出了以下参考错误:
ReferenceError:未定义 createCallback
注意:这里的错误不是在覆盖时产生的,而是在某些调用 eval 时产生的。在其他情况下,这完全符合预期。
请在此处找到问题重现代码:https ://runkit.com/embed/8hv0yp94on8s
node.js - 为什么 promisify 会导致循环花费更长的时间?
我有一个应用程序,它必须从视频中提取颜色信息,它通过分析每一帧来做到这一点。首先,我提取帧,然后将它们的位置数组加载到内存中。正如您可能想象的那样,即使是一个小视频也可能有数千个。
我用来提取每个帧颜色信息的函数是一个承诺,所以我选择批量处理一组承诺Promise.all
对于每个文件的绝对路径,我读取文件,fs
然后将其传递以进行处理。我已经使用许多独立图像完成了此操作,并且知道该过程只需要大约一秒钟,但突然间处理一张图像需要将近 20 分钟。我终于发现使用promisify
onfs.readFile
是造成瓶颈的原因。我不明白的是为什么?
在第一个fs.readFile
中,在返回的 Promise 中进行了转换,而在第二个fs.readFile
中,它只是像往常一样使用,我等待 resolve 被调用。我不介意使用无承诺的,我只是好奇为什么这会导致这么慢?
我停止使用promisify
该应用程序的第二秒速度恢复到 1 帧/秒
慢代码:
快速代码:
node.js - 创建寄存器:TypeError:'instanceof' 的右侧不可调用 Express 和 Promisify
以下代码向我显示了错误:
TypeError:'instanceof' 的右侧不可调用
es6-promisify
图书馆似乎有问题
javascript - Promisify 没有对象实例
getConnection
如果我们已经创建了池,我们可以 promisify mysql 池功能,如下所示:
用法可以是:
如何保证mysqlPool.getConnection.query
函数使用connection
变量?做这样的事情:
问题是我不知道如何将connection
变量传递给 promisify 函数。我想一种不同的方法是创建一个带有getConnectionPm
函数的连接对象,然后将查询绑定到该对象,就像我们为getConnection
自己承诺所做的那样。但是我们如何才能实现类似上面的代码呢?
例如,下面的代码给出了一个未定义的错误: