q.jsはnodejsの順番呼び出しを実現します.
4704 ワード
nodejsの非同期呼び出しは時々一番頭が痛くなります.どのようにコード順の実行ができますか?ここでnodejsのpromiseを共有します.
何が
プロミスの使用について調べましたが、一番いいのはq.jsです.個人的にはそう思います.もちろんpromise.jsもあります.興味のある友達は研究してみてください.ここでは主にq.jsの使い方を説明します.
まずインストールq.jsをダウンロードします.
Q.fcalに対して、Q.nfcalはnodeのQ.fcalです.
Q.fcal(function){return'1"""").then(function(value 2){consosolue.log(「プリント」,value 2);returnrn User.test(value 2)).then(function(value 3){sone.lone.lone.lone.lone.logt){valution.lone.lone.lone.lone.lone.lone.lover.lover.logn(value 3){vatuturne 3)){vatututurne 3){vatututurne 3){vaturne 3)){vatututurne.lone.lone.lone.lone.lofunction(//Do something with value 4 consolue.log).catch(function){/Handle any error from all above steps).done();
2使用Q.denodeify
何が
promise
ですか?promise
の規格は、非同期呼び出しの戻り結果、正しい戻り結果およびエラー処理を含む.詳細な説明文書は、Promises/A+を参照することができる.現在promise
標準を実現しているモジュールはたくさんあります.例えば、Q、bluebird、Deferredなどです.ここではQを例にして、promise
のnodejs
における使用方法を紹介します.プロミスの使用について調べましたが、一番いいのはq.jsです.個人的にはそう思います.もちろんpromise.jsもあります.興味のある友達は研究してみてください.ここでは主にq.jsの使い方を説明します.
まずインストールq.jsをダウンロードします.
npm install q
1、Q.nfcalを使うQ.fcalに対して、Q.nfcalはnodeのQ.fcalです.
var FS = require('fs'),
Q = require('q'),
colors = require('colors'),
file = 'example.txt';
var fsReadFile = Q.nfcall(FS.readFile,file,encoding);
fs ReadFile.then(function){ consolie.log(「invoke in nfcal」+file).red) consolone.log(reult.green) },function{error} consolie.log(「invoke in nfcal」.red) consolie.log(error.toString().red); } ); Q.fcal(function){return'1"""").then(function(value 2){consosolue.log(「プリント」,value 2);returnrn User.test(value 2)).then(function(value 3){sone.lone.lone.lone.lone.logt){valution.lone.lone.lone.lone.lone.lone.lover.lover.logn(value 3){vatuturne 3)){vatututurne 3){vatututurne 3){vaturne 3)){vatututurne.lone.lone.lone.lone.lofunction(//Do something with value 4 consolue.log).catch(function){/Handle any error from all above steps).done();
2使用Q.denodeify
var fsReadFile_denodeify = Q.denodeify(FS.readFile);
fsReadFile_denodeify(file,encoding).then(function(result){
console.log("invoke in denodeify".red);
console.log(result.green)
},function(error){
console.log("invoke in denodeify".red);
console.log(error.toString().red);
}
);
3、Q.deferdを使うvar fsReadFile_deferd = function(file,encoding){
var deferred = Q.defer();
FS.readFile(file,encoding,function(error,result){
if(error){
deferred.reject(error.toString().red);
}
deferred.resolve(result);
});
return deferred.promise;
};
fsReadFile_deferd(file).then(function(result){
console.log("invoke in deferd".red);
console.log(result.toString().green);
},function(error){
console.log("invoke in deferd".red);
console.log(error.toString().red);
}
);
4、make NodeResoloverを使用する()var fsReadFile_makeNodeResolver = function(file,encoding){
var deferred = Q.defer();
FS.readFile(file,encoding,deferred.makeNodeResolver());
return deferred.promise;
};
fsReadFile_makeNodeResolver(file,encoding).then(function(result){
console.log("invoke in makeNodeResolver".red);
console.log(result.green);
},function(error){
console.log(error.toString().red);
});