我正在使用node-mpdsocket库为节点编写mpd(音乐播放器守护程序)的客户端,但我似乎在早期遇到了一些混乱。在此示例中,response
是一个对象,response['state']
应该返回一个字符串。
var togglePause = function() {
var mpdState;
mpd.send('status', function(response) {
mpdState = response.state;
// Here, console.log(mpdState) returns mpd's state correctly
console.log(mpdState);
});
// Here, undefined is returned regardless of mpd's actual state
console.log(mpdState);
}
我希望mpdState
在两个实例中都返回一个字符串,因为调用console.log
的两个地方都在同一个函数中。但是,情况似乎并非如此。
答案 0 :(得分:1)
传递给mpd.send
的回调正在异步调用。因此,在回调运行之前调用第二个console.log
语句。回调中的console.log
语句具有正确的值,如您所见。
您正在运行的代码按预期运行。