2017-12-31 288 views
0

짧은 상황 보고서 :Node.js "require"- 중복 실행 방지

나는 교환을 위해 많은 API 호출을하는 두 개의 스크립트가 있습니다. 일부 호출 (주로 잔액 점검)은 두 스크립트에서 동일합니다.

API 호출을 제한하기 위해 모든 중복 호출을 파일에 저장하는 세 번째 스크립트에 넣었습니다.

스크립트 1과 2 모두 해당 파일에서 읽었으며 모두 제대로 작동합니다.

그러나, 더 FILEWRITE의 오버 헤드를 줄이고 3 초마다 읽고, 지금 스크립트 3를 필요로하며, 균형 배열이 그 길을 따라 전달된다 "필요"

스크립트 1 실험.

내가 예상하지 못한 것은 스크립트 3을 별도로 실행할 필요가 없다는 것입니다. 스크립트 1을 시작하면 스크립트 3이 백그라운드에서 실행 중임을 알 수 있습니다.

이제 스크립트 2와 동일한 require를 넣으면 will 스크립트 3은 효과적으로 두 번 실행됩니까? 그것은 세 번째 스크립트의 모든 목적을 이겨낼 것입니다 ... 스크립트 3은 스크립트 1과 2에서 입력이 전혀없이 간격으로 실행되는 함수 중 하나입니다. 잔액 배열은 수출 만.

+0

예 두 번 실행됩니다. 어떤 이유에서든 관계가 있다면 한 스크립트에서 모든 것을 실행하지 않습니까? – SunriseM

+0

두 스크립트는 3 개의 교환과 통신합니다. 상호 교환은 1 회뿐입니다. – Wannes

+0

두 스크립트 모두 700 줄을 넘었습니다. 병합하는 것이 좋습니다 :-) – Wannes

답변

0

파일을 처음으로 require 파일과 동기화하면 평가됩니다. 성공적으로 완료되면 (throw되지 않음) 해당 파일의 module.exports 값이 캐시됩니다.

그 파일을 require 번 더 보게되면 캐시 된 내보내기 값을 얻게됩니다.

여기에 원하는 파일은 module.exports = function something() { /* put your actual code here */ }입니다. 그러면 해당 기능을 요구할 수 있으며 필요한 경우에만 (여러 번, 필요할 경우) 호출 할 수 있습니다.

+0

아니요, 실제로는 다른 스크립트 내에서 호출 할 module.export 또는 함수가 없습니다. 스크립트 3은 독립 실행 형 폴링 스크립트로 작성되었습니다. 기본적으로 3 초마다 동일한 API 호출을 수행합니다. 각 루프에서 API 호출에서 숫자 배열을 수집하고 exports.name1 = Array1을 통해 이러한 3 개의 배열을 내 보냅니다. – Wannes

+0

독립 실행 형 스크립트를 독립 실행 형 함수로 변환하는 것이 좋습니다. 그러면 코드 실행시기를보다 효율적으로 제어 할 수 있습니다. – LJHarb