화각에 따라 같은 주제에 관해서 두 가지 질문이 있습니다.동시성/비 동시성의 가정에 대한 모범 사례
myFunction(function(something) {
console.log('a');
});
console.log('b');
내 요점은 다음과 같습니다 : 그것을인가
function myFunction(callback) {
//do something
callback(something);
}
지금 누군가가이 함수를 호출 :
의이 실행 된 함수의 반환 값을받는 콜백을 허용하는 기능이있어 가정 해 봅시다 이벤트 'a'와 'b'의 순서에 대한 가정을하기 위해 사용자 (함수를 호출하는 사용자)를 위해 항상 저장 하시겠습니까? 결과 : 정확한 동작에 의존하는 잘못된 코딩 스타일로 간주됩니까? (runnig 시간에 대해서는 이야기하지 않지만 동시성이나 비동기성에 관해서는 말하지 않는다!) 누군가가 myFunction
이 비동기 적이라고 생각할 수 있으므로 'b'가 발생해야합니다. 항상 'a'앞에이 있습니다.
다른 방법으로 : 특정 기능을 설계 한 사람으로서 예측할 수없는 순서로 작성하는 것이 나쁜 코딩 스타일로 간주됩니까? 어쩌면 특정 사건이 일어날 때까지 기다려야 비동기 적 대답이 생길 수도 있고, 아니면 정확한 행동이 기다려지지 않아 비동기 성이 요구되지 않을 수도 있습니다. 이 경우 process.nextTick (...)을 추가하여 항상 동일한 동작을 유지하는 것이 가장 좋습니까?
미리 감사드립니다.
개발자가 안전하기를 원한다면, 개발자는 myFunction이 어떻게 사용되는지를 이해해야한다. –
이것은 매우 외교적 인 답변입니다 :) 그 기능을 설계하는 사람의 경우에는 무엇을해야할까요? – zaphod1984
... 아래의 사용자 의견에 응답하면 사용자가 해당 동작을 예측할 수없는 기능을 만드는 것이 현명하지 않을 수 있습니다. 특정 상황을 동기식으로 최적화하여 최적화 할 수 있다면 콜백이 필요한 비동기 함수로 문서화해야합니다. 동기화가 끝나면 준비가되면 콜백을 실행할 수 있습니다. –