栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Promise处理Node.js中的MySQL返回值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Promise处理Node.js中的MySQL返回值

这会有点分散,请原谅我。

首先,假设此代码正确使用了mysql驱动程序API,这是将其包装为与本机promise一起使用的一种方法:

function getLastRecord(name){    return new Promise(function(resolve, reject) {        // The Promise constructor should catch any errors thrown on        // this tick. Alternately, try/catch and reject(err) on catch.        var connection = getMySQL_connection();        var query_str =        "SELECt name, " +        "FROM records " +"WHERe (name = ?) " +        "LIMIT 1 ";        var query_var = [name];        connection.query(query_str, query_var, function (err, rows, fields) { // Call reject on error states, // call resolve with results if (err) {     return reject(err); } resolve(rows);        });    });}getLastRecord('name_record').then(function(rows) {    // now you have your rows, you can see if there are <20 of them}).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain

所以一件事:您仍然有回调。回调只是函数,您可以使用将来选择的参数将其传递给将来的某个点。因此,中的函数参数

xs.map(fn)
(err,result)
在node中看到的函数以及promise结果和错误处理程序都是回调。人们将一种特定的回调称为“回调”,这在某种程度上使人感到困惑,这种回调
(err,result)
在节点核心中以“连续传递样式”的形式使用,有时被不喜欢它们的人称为“ nodebacks”。

到目前为止,至少(异步/等待最终会出现),无论是否采用Promise,您都几乎陷入了回调。

另外,我会注意到,promise不会立即生效,显然在这里很有用,因为您仍有回调。当您将它们与

Promise.all
并保证累加器相结合时,承诺才真正闪耀
Array.prototype.reduce
。但他们
做的 光泽有时,他们 值得学习的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号