Promise とは何か、そして Promise によってどのような問題が解決されるかについては、ノードのコールバック非同期コーディング方法を体験してから http://wiki.commonjs.org/wiki/Promises/A に依存するを参照してください。それがどのように定義されているかについては、ここでは詳しく説明しません。
ここでは、q.js を使用してノード API の Promise を実装する方法を見ていきます。
1. すべてはインストールから始まります
npm install q
2. 標準ノードスタイル API の Promise メソッド
1. Q.nfcall を使用します
Q.fcall に対して、Q.nfcall はノードの Q.fcall です。
var FS = require('fs'),
Q = require('q'),
色 = require('colors'),
ファイル = '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().red);
}
);
2. Q.denodeify を使用します
var fsReadFile_denodeify = Q.denodeify(FS.readFile);
fsReadFile_denodeify(ファイル,エンコーディング).then(関数(結果){
console.log("denodeify での呼び出し".red);
console.log(result.green)
},関数(エラー){
console.log("denodeify での呼び出し".red);
console.log(error.toString().red);
}
);
3. Q.deferd を使用します
var fsReadFile_deferd = function(file,encoding){
var deferred = Q.defer();
FS.readFile(ファイル,エンコーディング,関数(エラー,結果){
If(エラー){
deferred.reject(error.toString().red);
}
deferred.resolve(result);
});
return deferred.promise;
};
fsReadFile_deferd(ファイル).then(関数(結果){
console.log("遅延での呼び出し".red);
console.log(result.toString().green);
},関数(エラー){
console.log("遅延での呼び出し".red);
console.log(error.toString().red);
}
);
4. makeNodeResolver()
を使用します。
var fsReadFile_makeNodeResolver = function(file,encoding){
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);
});