함수가있어서 정보이 정의되지 않습니다.외부 변수로 콜백 결과를 사용합니다. 노드 js
var info = queryCollection(t,where,type,function(result){
var rek=result;
return rek;
});
코드는 몽고 DB를
함수가있어서 정보이 정의되지 않습니다.외부 변수로 콜백 결과를 사용합니다. 노드 js
var info = queryCollection(t,where,type,function(result){
var rek=result;
return rek;
});
코드는 몽고 DB를
핵심 개념 중 하나, 동시성은, 자바 스크립트의 작동 방식을 기본적으로 요구하고있는 서버 측 노드 JS입니다. 이것은이 플랫폼의 범위를 벗어나므로 여러분이 구축하고자하는 것을 계속하기 전에 튜토리얼을 확인하시기 바랍니다. 이 beeing 내가 작은 예제를 설치했다.
https://jsfiddle.net/xavf01rn/
var myAsyncFunction = function(callback) {
console.log("Now in async function...");
// set timeout is an function that is async. E.g. like your queryCollection fundtion
setTimeout(function(){
console.log("Passing back the result to the callback!");
callback("dummyResultValue");
}, 0)
console.log("Now exiting async function...");
};
// note how we pass in a function as parameter. It will be called once the async action has completed
var result = myAsyncFunction(function(asyncResult) {
console.log("Got result in async function callback:", asyncResult); // asyncResult has a value
});
console.log("Result right after calling the myAsyncFunction function:", result); // result = undefined
출력은 예상과 가능성이 다른 어느 다음과 같습니다. 이는 JS의 비동기 특성 때문입니다.
Now in async function...
Now exiting async function...
Result right after calling the myAsyncFunction function: undefined
Passing back the result to the callback!
Got result in async function callback: dummyResultValue
왜 출력이 보이는 것처럼 보이는지 확인하십시오. 일단 당신이 이것을 이해했다 : 예! 언어를 매우 강력하게 만드는 가장 중요한 JS 개념 중 하나를 잘 알고 있습니다 (다른 이유로도).
하지만 여전히 결과는 정의되지 않음 –
그게 맞습니다. 그러나 결과는 콜백 함수에 알려져 있습니다. 이것이 JS가 작동하는 방식입니다. 당신이 달성하고자하는 것은 비동기 함수를 가진 나쁜 프로그래밍 스타일을 제외하고는 불가능합니다. – newBee
queryCollection은 비동기 함수입니다 (대부분). 따라서 마지막으로 제공하는 매개 변수는 콜백입니다. 거기에는 많은 정보가 있으며, 이것이 무엇이며 어떻게 작동하는지 설명합니다. – newBee
@newBee 이해해 주시겠습니까? –