api_node.js の Promise を実装するには、node.js で q.js を使用します。

WBOY
リリース: 2016-05-16 16:36:17
オリジナル
1295 人が閲覧しました

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);
});
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート