callback异步改Promise

在 redis 模块中,遇到一个苦难的问题,它的所有get方法都是通过 callback 来取值的。但是实际的情况下,又遇到一个,我设置值前,需要先通过 exists 检查一下 key 是否存在。

可以通过返回一个 Promise 对象来解决这个问题。

如下:

function testG(req, res) {
    co(function *() {
        let token = req.query.token || common.ranStr();

        let uniqueToken = yield generateToken(token);

        console.log(uniqueToken);

        res.send({uniqueToken});
    });
}

function generateToken(token) {
    return new Promise(function (resolve, reject) {
        redisHelper.exists(token, function (err, exists) {
            if (err) {
                reject(err);
            } else {
                resolve(exists);
            }
        });
    });
}

 

 ----------------------------------------

 

Another Example: https://github.com/alsotang/node-lessons/tree/master/lesson17

posted @ 2017-07-05 17:35  Au_ww  阅读(246)  评论(0编辑  收藏  举报