0
我有下面的例子:異步的JavaScript功能不能正常工作
var first=setInterval(function() {
var t=new Date();
console.log("Started: ",t);
sleep(function(){
var t=new Date();
console.log("Finished: ",t);
});
},500);
function sleep(callback){
for (var i=0;i<10000000000;i++){
//waiting
}
callback();
}
恕我直言,睡眠應異步執行,但它不,輸出:
Started: Mon Mar 04 2013 12:31:10 GMT+0200 (EET)
Finished: Mon Mar 04 2013 12:31:23 GMT+0200 (EET)
Started: Mon Mar 04 2013 12:31:24 GMT+0200 (EET)
Finished: Mon Mar 04 2013 12:31:36 GMT+0200 (EET)
Started: Mon Mar 04 2013 12:31:36 GMT+0200 (EET)
*「恕我直言睡眠應該異步執行」*爲什麼?你沒有做任何事情來使它異步。 (也就是在'setInterval'回調中。) – 2013-03-04 10:40:51
你誤解了JavaScript與線程的關係。所有代碼都在單個線程上執行,異步操作的回調必須等待線程變得閒置,然後才能自行執行。 – 2013-03-04 10:42:24