我问了这个问题,并被告知要避免 Promise 构造函数反模式。我通读了链接的文章,但我不确定如何不使用反模式。这是函数:
db.getUserCount = function () {
return new Promise (function (resolve, reject) {
db.users.count().then(function (result) {
resolve (result);
}, function(e) {
reject (e);
});
});
Run Code Online (Sandbox Code Playgroud)
我所有的数据库查询都像上面那样编码。这是我不使用反模式的尝试,但由于我不完全理解它,我认为这种方式也不正确:
db.getUserCount = function () {
return new Promise (function (resolve, reject) {
db.users.count().then(function (result) {
return (result);
}).then(function(result) {
resolve(result);
}).catch(function(err) {
reject(err);
});
});
};
Run Code Online (Sandbox Code Playgroud)
因为我想写出好的代码,如果有人能花一点时间向我展示一个不使用反模式来使用上述函数的例子,那就太好了。
当我使用 NodeJS 将变量传递给我的 html 页面时,我可以使用内联脚本访问它,如下所示:
// passing myVar from the server
router.get('/', (req, res) => {
res.render('index', { myVar: 'test'});
});
// access in index.ejs
<script>
let myVar = <%- JSON.stringify(myVar) %>;
alert(myVar);
</script>
Run Code Online (Sandbox Code Playgroud)
如果我尝试在这里使用外部脚本而不是内联脚本,我会遇到使用 ejs 语法的错误<%- %>。如何在外部脚本中访问 myVar?
我正在使用存储在S3上的一些xml文件.我使用Node中的xml2js模块来解析xmls,然后我提取其中包含.jpg的字符串.我正在使用过滤器方法,然后尝试使用我自己的for循环但是没有任何时间关闭.有没有更快的方法来编写代码的这一部分,或者这是完成它的最快方法.任何帮助赞赏.
使用过滤方法:
//this took 52393ms
var file = JSON.stringify(data);
var arrayOfStrings = file.split('"');
var images = arrayOfStrings.filter(function(str) {
return str.indexOf('.jpg') !== -1;
});
resolve(images);
Run Code Online (Sandbox Code Playgroud)
使用for循环:
//this took 52681ms
var file = JSON.stringify(data);
var arrayOfStrings = file.split('"');
var images =[];
for(let i = 0; i < arrayOfStrings.length; i++) {
if(arrayOfStrings[i].indexOf('.jpg') !== -1) {
images.push(arrayOfStrings[i]);
}
}
resolve(images);
Run Code Online (Sandbox Code Playgroud)
使用file.split('"')后,数据如下所示:
[ '{','rstuv',':{','options',':[{','']];
Run Code Online (Sandbox Code Playgroud)