대답이 업데이트되었습니다 :
sendMessage
에 대한 호출이 동기식이므로 비동기식 기능을 호출해야합니다 (아래에서 언급했듯이). sendMessage
은 NodeJS 문서에 표시되지 않습니다.
var obj, keys, key, index;
// Define the object
obj = {
'item1': 'apple',
'item2': 'orange'
};
// Find its keys (you can just type in the array if they don't
// need to be discovered dynamically)
keys = [];
for (key in obj) {
keys.push(key);
}
// Start the loop
index = 0;
process();
// This function gets called on each loop
function process() {
// Are we done?
if (index >= keys.length) {
// Yes
console.log("The cycle ended");
}
else {
// No, send the next message and then
// use this function as the callback so
// we send the next (or flag that we're done)
sendMessage(obj[keys[index++]], process);
}
}
원래 대답 :주기 는 동기가 당신은 당신이 콜백 메커니즘에서 그것을 가지고, 또는 사용하는 것이 었습니다 어떤 소스에서 그것의 동기 버전을 찾을해야합니다 . 당신은 setTimeout
또는 무언가 * * 동기화 할 수 있도록 할 것입니다.
NodeJS에 대한 호출은 동기식이 아닐 수도 있습니다. 동기 호출을 원한다면 xyzSync
버전의 호출해야합니다.
당신이 루프 * * 동기 만들고 싶어, 당신이 의미 할 수 무엇인지 추측을 계속 :
var obj, key;
// Define the object
obj = {
'item1': 'apple',
'item2': 'orange'
};
for (key in obj) {
schedule(key);
}
function schedule(k) {
setTimeout(function() {
// Do something with obj[k]
}, 0);
}
StackOverflow에 오신 것을 환영합니다!합리적인 방법으로 답변을 얻으려면 질문에 대한 더 자세한 정보를 제공해야합니다. 실제로, 지금과 같은 방식으로, 귀하의 질문은 지역 사회에 의해 "진정한 질문이 아닙니다"라고 결론 지을 수 있습니다. 그게 당신을 괴롭히지 않게하십시오, 단지 더 많은 세부 사항으로 다시 시도하십시오. ** 사람들은 ** 준비가되어 있으며 기꺼이 도와줍니다. 아마도 [FAQ] (http://stackoverflow.com/faq)와 [이 페이지에서 질문을 할 수 있습니다.] (http://stackoverflow.com/questions/how-to-ask). 최고, –
감사합니다. T.J. Crowder. –
Milo, 질문을 다시 게시하는 대신 반대로 질문을 "편집하여"자세한 정보를 제공 할 수 있습니다. – Matt