ノードサーバーからいくつかのリクエスト/レスポンスを送信しようとしていますが、それらが非同期であるため、私は約束を覚えて学習を始めなければなりませんでした。イムは、bluebird
とnode
と同様にrequest
を使用してリクエストを送信します。ノードの約束とコードの可読性
私は証明書チェーンを確立しようとしており、私のサーバーは信頼できるサードパーティーとして働いています。私は、次の
function send_certificates (addr) {
return send_csr_request(addr)
.then(function(csr) {
return new Promise(function(resolve,reject) {
resolve(sign_device_cert(csr))}
)}).then(function(signed_cert) {
return new Promise(function(resolve,reject) {
//another resolve here?
resolve(send_cert(signed_cert));
})
});
}
理想的には、私は、にこの「約束チェーン」への別要求を平手打ちしたいresolve(send_cert(caroot_cert))
のようなものとちょうど一般的に少し良くreqeust /応答のこのチェーンを変更することができるだろうを持っています。これらのメソッドを呼び出すだけの定型コードがたくさんあるような気がします。これを行うには他にも、管理しやすく読みやすい方法がありますか?
また、これらすべての方法を約束する必要があるかどうかはわかりません。たとえば、sign_device_cert
がPromiseを返す場合、.then()
を呼び出してチェーンするにはどうすればいいですか?
EDITここ
が要求を送り出す私の機能..です
function send_ca_cert(cert) {
const url_string = "http://myaddress.com";
var request_options = {
url : url_string,
proxy : my_proxy,
body: pki.certificateToPem(cert),
headers: { "someHeader : "somevalue"}
};
return new Promise((resolve,reject) => {
request.postAsync(request_options, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log("Sent off ca cert");
resolve();
}
reject();
});
});
}
私はthen(send_cert).then(send_ca_cert)
を呼び出すとき、私は「彼らはドンどのように来るのプリント
Sent off ca cert
Sent off cert
取得約束を尊重する?
次の関数に入れるデータは 'resolve()'から推測されますか? ?すべての関数が値を返したり解決しない場合はどうすればよいですか? – enrm
これはうまくいかないようです。私がこれを行うと、(最初のものの後に).then(send_cert())が追加されて、2番目のものは最初のもの、すなわちそれが逐次行われていない前に行われたと報告されます.. – enrm
'send_cert()'!== 'send_cert ' –