몽구스에 관한 이야기가 아닙니다. Node.js는 비동기 언어이므로 동시에 여러 번 비동기 작업 (예 : 데이터베이스 쿼리)을 실행할 수 있습니다.
var when = require('when');
var someWork = function(callback) {
when.all([
collection1.find(query1).exec(),
collection2.find(query2).exec()
]).spread(callback)
.otherwise(function(err) {
// something went wrong
});
};
when.js
이 약속을 처리하는 모듈입니다 : 당신이 필요로하는 무엇
는 async.js 또는 when.js 같은 비동기 제어 흐름을 처리 할 수있는 몇 가지 lib 디렉토리입니다. 당신이 약속을 필요로하지 않는 경우에 따라서, 대신 async.js
을 사용할 수 있습니다 :
var async = require('async');
var someWork = function(callback) {
async.parallel([
function(cb) { collection1.find(query1, cb) },
function(cb) { collection2.find(query2, cb) }
], function(err, res) {
if (!err) return callback.apply(null, data);
// something went wrong
});
};
업데이트 : 약속은 약속 비동기 기능을 래핑하여 비동기 제어 흐름을 처리 할 수있는 다른 방법입니다.
일반적으로 일부 비동기 함수의 결과를 얻으려면 향후 콜백을 전달해야합니다.
약속을 사용 중일 때 콜백을 전달하는 대신 실행 결과가 곧 어딘가에서 해결 될 것이라는 약속이 즉시 전달됩니다.
그래서 약속을 사용하면 실제 데이터 대신 약속을 사용하여 동기 방식으로 비동기 함수로 작업 할 수 있습니다. 또한 Promises를 사용하면 실행 중 언제든지 결과를 기다릴 수 있습니다.
필자는 두 가지 쿼리를 실행하여 결과에 대해 두 가지 약속을 얻고 있습니다. 그런 다음 두 노드가 결과를 callback
함수에 전달할 때까지 노드가 기다려야한다고 말하고 있습니다.
promises/A+
specification here을 읽을 수 있습니다. when.js
api docs도보실 수 있습니다.
약속이 무엇인지 설명하거나 참조 할 수 있습니까? – Slappy
@ Slappy 나는 나의 대답을 편집하고 약속에 대한 설명을 추가했다. –