2013-05-25 3 views
0

내가require with async를 반환하는 방법은 무엇입니까?

app.js ... 그래서 나와 함께 곰이 조금 새로운 해요 :

var testVariable = require('./test'); 
console.log(testVariable); 

test.js : 출력이이 시나리오에서는

setTimeout(function() { 
    exports.something = "HELLO!"; 
}, 10000); 

입니다 {}. exports.something = "HELLO!";을 setTimeout 외부로 이동하면 출력은 { something: 'HELLO' }입니다.

저는 DB에 연결하려고하고 있습니다. 상상할 수있는 것처럼 잠깐입니다. app.js로 처리하는 데 약간 시간이 걸리는 것을 어떻게 반환 할 수 있습니까?

답변

2

수 없습니다.

require 동기이며, 노드는 처음에 비동기가 필요했지만, 사람들이 그것을 악용 결국 때문에이 떨어졌다, 그리고 그것은 잘 유지되지 않았습니다.

난 당신이

exports.something = promise; 

그런 짓을 그리고 값, 또는 콜백 핸들러에 대한 약속을 반환 좋습니다.

가장 간단한 구현은

var callback=function(){},fired=false,data; 
exports.handle = function(cb){ 
    callback = cb; 
    if(fired === true){ //already fired once 
     cb(data);//fire again 
    } 
}); 

setTimeout(function() { 
    cb("HELLO!"); 
    fired = true; 
    data = "HELLO!"; 
}, 10000); 

이 그럼 당신은 아이디어가 가치가 준비되면 대신 값을 반환하는 당신이 실행하는 함수를 반환하고 있다는 것입니다

require("myModule").handle(function(data){ 
    //work with data 
}); 

사용할 수 있습니다 될 수있다 가치에.

+0

당신은 당신이 "약속"에 의해 무슨 뜻인지 조금 설명 할 수 (이 핸들러 전에 완료 콜백이 할당 된 경우 실행되도록 또한, 나는 몇 가지 상용구를 포함 시켰습니다)? dsp_099 @ –

+0

는 지금 분명히인가? –

관련 문제