【发布时间】:2018-05-13 19:04:30
【问题描述】:
方法 asyncBlock 正在正确执行。
但是(其他两种方法)当它被分成 2 种方法时,它的重新调整承诺而不是实际值。
https://runkit.com/sedhuait/5af7bc4eebb12c00128f718e
const asyncRedis = require("async-redis");
const myCache = asyncRedis.createClient();
myCache.on("error", function(err) {
console.log("Error " + err);
});
const asyncBlock = async() => {
await myCache.set("k1", "val1");
const value = await myCache.get("k1");
console.log("val2",value);
};
var setValue = async(key, value) => {
await myCache.set(key, value);
};
var getValue = async(key) => {
let val = await myCache.get(key);
return val;
};
asyncBlock(); // working
setValue("aa", "bb"); // but this isn't
console.log("val", getValue("aa"));//but this isn't
输出
val Promise { <pending> }
val2 val1
【问题讨论】:
-
所有
async函数都返回一个promise——它们就是这样工作的。该承诺的已解决值(您可以使用.then()或await获得)将是您从async函数返回的值。
标签: node.js redis async-await