เกี่ยวกับสัญญาคืออะไรและสัญญาที่จะแก้ไขได้โปรดสัมผัสกับวิธีการเข้ารหัสแบบอะซิงโครนัสการโทรกลับของโหนดแล้วย้ายไปที่ http://wiki.commonjs.org/wiki/promises/a เพื่อดูว่ามันถูกกำหนดอย่างไร ฉันจะไม่เข้าไปดูรายละเอียดที่นี่
ที่นี่เราจะเห็นวิธีการใช้ Q.JS เพื่อใช้สัญญาของ Node API
1. ทุกอย่างเริ่มต้นด้วยการติดตั้ง
การคัดลอกรหัสมีดังนี้:
NPM ติดตั้ง Q
2. วิธีการสัญญาของ API สไตล์โหนดมาตรฐาน
1. ใช้ q.nfcall
เมื่อเทียบกับ Q.FCALL, Q.NFCALL เป็น Q.FCALL ของโหนด
การคัดลอกรหัสมีดังนี้:
var fs = ต้องการ ('fs')
Q = ต้องการ ('Q')
สี = ต้องการ ('สี'),
file = 'example.txt';
var fsReadFile = q.nfcall (fs.readfile, ไฟล์, การเข้ารหัส);
fsReadFile จากนั้น (ฟังก์ชั่น (ผลลัพธ์) {
console.log (("เรียกใช้ใน nfcall" + ไฟล์) .ed);
console.log (result.green);
}, ฟังก์ชัน (ข้อผิดพลาด) {
console.log ("เรียกใช้ใน nfcall" .ed);
console.log (error.toString (). สีแดง);
-
-
2. ใช้ q.denodeify
การคัดลอกรหัสมีดังนี้:
var fsReadFile_denodeify = q.denodeify (fs.readfile);
fsReadFile_denodeify (ไฟล์, การเข้ารหัส). จากนั้น (ฟังก์ชั่น (ผลลัพธ์) {
console.log ("เรียกใช้ใน denodeify". red);
console.log (result.green)
}, ฟังก์ชัน (ข้อผิดพลาด) {
console.log ("เรียกใช้ใน denodeify". red);
console.log (error.toString (). สีแดง);
-
-
3. ใช้ q.deferd
การคัดลอกรหัสมีดังนี้:
var fsreadfile_deferd = function (ไฟล์, การเข้ารหัส) {
var referred = q.defer ();
fs.readfile (ไฟล์, การเข้ารหัส, ฟังก์ชัน (ข้อผิดพลาด, ผลลัพธ์) {
ถ้า (ข้อผิดพลาด) {
deferred.reject (error.toString (). สีแดง);
-
referred.resolve (ผลลัพธ์);
-
return reterred.promise;
-
fsReadFile_deferd (ไฟล์). จากนั้น (ฟังก์ชั่น (ผลลัพธ์) {
console.log ("เรียกใช้ใน deferd". red);
console.log (result.toString (). สีเขียว);
}, ฟังก์ชัน (ข้อผิดพลาด) {
console.log ("เรียกใช้ใน deferd". red);
console.log (error.toString (). สีแดง);
-
-
4. ใช้ makenoderesolver ()
การคัดลอกรหัสมีดังนี้:
var fsreadfile_makenoderesolver = function (ไฟล์, การเข้ารหัส) {
var referred = q.defer ();
fs.ReadFile (ไฟล์, การเข้ารหัส, รอการตัดบัญชี. makenoderesolver ());
return reterred.promise;
-
fsReadFile_makenoderesolver (ไฟล์, การเข้ารหัส). จากนั้น (ฟังก์ชั่น (ผลลัพธ์) {
console.log ("เรียกใช้ใน makenoderesolver". red);
console.log (result.green);
}, ฟังก์ชัน (ข้อผิดพลาด) {
console.log (error.toString (). สีแดง);
-