약속이 무엇인지, 약속이 해결되는 것과 관련하여, 콜백 비동기 인코딩 노드를 경험 한 다음 http://wiki.commonjs.org/wiki/promises/a로 이동하여 그것이 어떻게 정의되는지 확인하십시오. 나는 여기에서 자세히 설명하지 않을 것입니다.
여기서는 Q.JS를 사용하여 노드 API의 약속을 구현하는 방법을 볼 수 있습니다.
1. 모든 것이 설치로 시작됩니다
코드 사본은 다음과 같습니다.
NPM 설치 q
2. 표준 노드 스타일 API의 약속 방법
1. Q.NFCALL을 사용하십시오
q.fcall과 비교할 때 Q.nfcall은 노드의 Q.fcall입니다.
코드 사본은 다음과 같습니다.
var fs = 요구 ( 'fs'),
Q = 요구 ( 'Q'),
colors = require ( 'colors'),
file = 'example.txt';
var fsreadfile = q.nfcall (fs.readfile, file, encoding);
fsreadfile.then (function (result) {
Console.log (( "NFCALL에서 호출" + 파일) .red);
Console.log (result.green);
}, 함수 (오류) {
Console.log ( "NFCALL에서 호출".RED);
console.log (error.toString (). 빨간색);
}
);
2. Q.Denodeify를 사용하십시오
코드 사본은 다음과 같습니다.
var fsreadfile_denodeify = q.denodeify (fs.readfile);
fsreadfile_denodeify (file, encoding). then (function (result) {
console.log ( "denodeify invoke".red);
Console.log (result.green)
}, 함수 (오류) {
console.log ( "denodeify invoke".red);
console.log (error.toString (). 빨간색);
}
);
3. q.deferd를 사용하십시오
코드 사본은 다음과 같습니다.
var fsreadfile_deferd = function (파일, 인코딩) {
var deferred = q.defer ();
fs.ReadFile (파일, 인코딩, 함수 (오류, 결과) {
if (오류) {
Deferred.reject (error.toString (). red);
}
Deferred.resolve (결과);
});
Return Deferred.Promise;
};
fsreadfile_deferd (file). then (function (result) {
Console.log ( "Deferd in Deferd".red);
console.log (result.tostring (). green);
}, 함수 (오류) {
Console.log ( "Deferd in Deferd".red);
console.log (error.toString (). 빨간색);
}
);
4. Makenoderesolver를 사용하십시오 ()
코드 사본은 다음과 같습니다.
var fsreadfile_makenoderesolver = function (파일, 인코딩) {
var deferred = q.defer ();
fs.ReadFile (파일, 인코딩, DEFERRED.MAKENODERESOLVER ());
Return Deferred.Promise;
};
fsreadfile_makenoderesolver (파일, 인코딩).
Console.log ( "Makenoderesolver에서 호출".red);
Console.log (result.green);
}, 함수 (오류) {
console.log (error.toString (). 빨간색);
});