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