gpt4 book ai didi

node.js - 在 JS 中实现 Promise

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:16 26 4
gpt4 key购买 nike

我有一个位于/models/profile.js 中的函数:

module.exports = {
getDataProfil : function(id_user){
connection.query("SELECT * FROM user WHERE id_user = ?", [id_user], function(err, rows, fields){
if(err) throw err;
console.log(rows[0]);

});
}
}

我想调用/controllers/profile.js 中的 getDataProfile

module.exports.profil_get = function(req, res, next) {
profile_model.getDataProfil(req.user.id_user).then();


}

我想在那里实现 promise ,因为我需要渲染页面。怎么做?谢谢

最佳答案

使用这个,您也可以使用q模块。

module.exports = {
getDataProfil: function(id_user) {
connection.query("SELECT * FROM user WHERE id_user = ?", [id_user], function(err, rows, fields) {
if (err) return ['err', err];
return [null, rows[0]];
});
}
}

并且 profil_get 将是:

module.exports.profil_get = function(req, res, next) {
profile_model.getDataProfil(req.user.id_user)
.then(function(res) {
console.log(res);
});
}

检查 res[0] 是否为 null 表示成功,或者是字符串表示拒绝。

另一个实现是

module.exports = {
getDataProfil: function(id_user) {
var dfd = q.defer();
connection.query("SELECT * FROM user WHERE id_user = ?", [id_user], function(err, rows, fields) {
if (err) { dfd.reject(err); }
else { dfd.resolve(rows[0]); }
});
}
return dfd.promise;
}

profil_get:

module.exports.profil_get = function(req, res, next) {
profile_model.getDataProfil(req.user.id_user)
.then(function(res) {
console.log(res);
})
.catch(function(err){
console.log(err);
});
}

关于node.js - 在 JS 中实现 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50155463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com