Nodejs承诺待处理

编程入门 行业动态 更新时间:2024-10-09 05:21:43

<a href=https://www.elefans.com/category/jswz/34/1771440.html style=Nodejs承诺待处理"/>

Nodejs承诺待处理

我正在尝试为多个Redis连接创建一个构造函数,所以我已经开始尝试一些东西。我只是从Promise {}那里回来,但是如果在返回之前做console.log,我会得到真正的价值。

编辑:在没有异步/等待的情况下尝试仍然无法正常工作。

app.js

const rBredis = require("./redis");
const redis = new rBredis();
console.log(redis.has("kek"));

redis.js

const Redis = require("ioredis");
class BasicRedis {
    constructor() {
        // TODO
    };
    redis = new Redis();
    async has(id) {
        return await this.redis.exists(id)
            .then( exists => {
                // console.log(exists); works 0
                return exists; // works not Promise { <pending> }
            });
    };
}
module.exports = BasicRedis;
回答如下:

我不完全理解您的问题,但是我在这里看到了问题。您需要复习Promises和Async等待的知识。您要么使用异步await或Promises(.then)语法以使其正常工作。

redis.js

class BasicRedis {
    constructor() {
        // TODO
    };
    redis = new Redis();
// You can either do it like this
    has(id) {
         return new Promise((res, rej) => {
           this.redis.exists(id)
             .then( exists => {
                res(exists)
             }).catch(err => {
                rej(err.message)
              });
         })
    };

// Or like this 
     has(id) {
         return this.redis.exists(id)
    };
}

在两种情况下,您都可以等待/。然后生成app.js

// app.js
const rBredis = require("./redis");
const redis = new rBredis();
redis.has("kek").then(res => console.log(res))

编辑-1

如果这需要花费甚至1毫秒的时间,那么您将无法立即获得价值。您需要使用async-await或promises。或使用类似这样的回调

redis.js


class BasicRedis {
    constructor() {
        // TODO
    };
    redis = new Redis();

      has(id, callback) {
           this.redis.exists(id)
             .then( exists => {
                callback(exists)
             }).catch(err => {
                callback(err.message)
              });
    };

}

app.js

const rBredis = require("./redis");
const redis = new rBredis();
redis.has("kek", (res) => console.log(res))

这里是指Promises MDN和Async Await MDN

希望有帮助。

更多推荐

Nodejs承诺待处理

本文发布于:2024-05-07 05:22:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754483.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Nodejs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!