我试图从回调函数中提取变量的值。 我在这里做错了什么?
var storyList = [];
var storyTemp ={};
// get list of all stories
db.getAllStoriesSet(function(err, reply) {
if (err) throw err;
else {
storyList = reply;
console.log("storylist inner: " + storyList);
};
});
console.log("storylist outer: " + storyList);
在上面的代码中,我期待内部和外部故事列表值相同。 但是外部的storyList值仍然是一个空列表。
编辑:添加问题。 我在异步函数之外初始化了一个变量storyList。然后我接受来自异步函数的回复并将其放入变量storyList中。我本来希望欺骗我的方式摆脱我显然为自己挖掘的缓慢和残酷死亡的异步坑。 它应该有效吗?
答案 0 :(得分:5)
如果getAllStoriesSet
是异步的,则在执行回调之前调用其调用之后的行。所以storyList
就像电话会议之前一样。
这就是你提供回调的原因:你必须在回调中加入需要reply
值的代码。