> 웹 프론트엔드 > JS 튜토리얼 > node.js의 q.js를 사용하여 api_node.js의 약속을 구현합니다.

node.js의 q.js를 사용하여 api_node.js의 약속을 구현합니다.

WBOY
풀어 주다: 2016-05-16 16:36:17
원래의
1313명이 탐색했습니다.

Promise가 무엇인지, 어떤 문제를 해결하는지에 대해서는 노드의 콜백 비동기 코딩 방식을 경험해 보시고 http://wiki.commonjs.org/wiki/Promises/A를 참조하세요. 어떻게 정의되어 있으므로 여기서는 자세히 설명하지 않겠습니다.

여기서 q.js를 사용하여 노드 API의 약속을 구현하는 방법을 살펴보겠습니다.

1. 모든 것은 설치부터 시작됩니다

코드 복사 코드는 다음과 같습니다.

npm 설치 q

2. 표준 노드 스타일 API의 Promise 방식

1. Q.nfcall을 사용하세요

Q.fcall과 관련하여 Q.nfcall은 node의 Q.fcall입니다.

코드 복사 코드는 다음과 같습니다.

var FS = require('fs'),
Q = 요구('q'),
색상 = require('색상'),
파일 = 'example.txt';
var fsReadFile = Q.nfcall(FS.readFile,파일,인코딩);
fsReadFile.then(함수(결과){
console.log((“nfcall에서 호출” 파일).red);
console.log(result.green);
},함수(오류){
console.log(“nfcall에서 호출”.red);
console.log(error.toString().red);
}
);

2. Q.denodeify를 사용하세요

코드 복사 코드는 다음과 같습니다.

var fsReadFile_denodeify = Q.denodeify(FS.readFile);

fsReadFile_denodeify(파일,인코딩).then(함수(결과){
console.log("invoke in denodeify".red);
console.log(결과.녹색)
},함수(오류){
console.log("invoke in denodeify".red);
console.log(error.toString().red);
}
);

3. Q.deferd를 사용하세요

코드 복사 코드는 다음과 같습니다.

var fsReadFile_deferd = 함수(파일,인코딩){
var deferred = Q.defer();
FS.readFile(파일,인코딩,함수(오류,결과){
If(오류){
        deferred.reject(error.toString().red);
}
deferred.resolve(결과);
});

deferred.promise 반환;
};

fsReadFile_deferd(파일).then(함수(결과){
console.log("invoke in defer".red);
console.log(result.toString().green);
},함수(오류){
console.log("invoke in defer".red);
console.log(error.toString().red);
}
);

4. makeNodeResolver()를 사용하세요

코드 복사 코드는 다음과 같습니다.

var fsReadFile_makeNodeResolver = 함수(파일,인코딩){
var deferred = Q.defer();
FS.readFile(file,encoding,deferred.makeNodeResolver());
deferred.promise 반환;
};

fsReadFile_makeNodeResolver(파일,인코딩).then(함수(결과){
console.log("makeNodeResolver에서 호출".red);
console.log(result.green);
},함수(오류){
console.log(error.toString().red);
});
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿