Node.js solījumu apmācība

Satura rādītājs:

Anonim

Iepriekšējās apmācībās jūs būtu redzējis atzvanīšanas funkcijas, kas tiek izmantotas asinhroniem notikumiem. Bet dažreiz atzvanīšanas funkcijas var kļūt par murgu, kad tās sāk ligzdot, un programma sāk kļūt gara un sarežģīta.

Šajā apmācībā jūs uzzināsiet

  • Kas ir solījumi?
  • Atzvani solījumiem
  • Darbs ar ligzdotiem solījumiem
  • Pielāgota solījuma izveide

Kas ir solījumi?

Pirms sākam ar solījumiem, vispirms pārskatīsim, kādas ir “atzvanīšanas” funkcijas Node.js. Šīs atsaukšanas funkcijas mēs daudz esam redzējuši iepriekšējās nodaļās, tāpēc ātri iziesim cauri vienai no tām.

Tālāk sniegtajā piemērā parādīts koda fragments, ko izmanto, lai izveidotu savienojumu ar MongoDB datu bāzi un veiktu atjaunināšanas darbību vienam no datu bāzes ierakstiem.

  1. Iepriekš minētajā kodā funkcijas daļa (err, db) ir pazīstama kā anonīmas vai atzvanīšanas funkcijas deklarēšana. Kad MongoClient izveido savienojumu ar MongoDB datu bāzi, tas pēc savienojuma darbības pabeigšanas atgriezīsies pie atzvanīšanas funkcijas. Tātad savā ziņā savienojuma darbības notiek fonā, un, kad tas ir izdarīts, tas izsauc mūsu atzvanīšanas funkciju. Atcerieties, ka tas ir viens no galvenajiem Node.js punktiem, kas ļauj vienlaikus veikt daudzas darbības un tādējādi neliedz nevienam lietotājam veikt darbību.

  2. Otrais koda bloks tiek izpildīts, kad tiek faktiski izsaukta atzvanīšanas funkcija. Atzvana funkcija tikai atjaunina vienu ierakstu mūsu MongoDB datu bāzē.

Kas tad ir solījums? Nu, solījums ir tikai Node.js atzvanīšanas funkciju uzlabojums. Izstrādes dzīves cikla laikā var būt gadījums, kad jums būs jāievieto kopā vairākas atzvanīšanas funkcijas. Tas var kļūt kaut kāds netīrs un grūti uzturams noteiktā laika posmā. Īsāk sakot, solījums ir atzvanīšanas uzlabojums, kas vērsts uz šo problēmu mazināšanu.

Solījuma pamata sintakse ir parādīta zemāk;

var promise = doSomethingAync()promise.then(onFulfilled, onRejected)
  • "doSomethingAync" ir jebkura atzvanīšanas vai asinhronā funkcija, kas veic sava veida apstrādi.
  • Šoreiz, nosakot atzvanīšanu, tiek atgriezta vērtība, ko sauc par "solījumu".
  • Kad solījums tiek atgriezts, tam var būt 2 rezultāti. To definē “tad klauzula”. Jebkura darbība var būt veiksmīga, ko apzīmē ar parametru 'onFulfilled'. Vai arī tajā var būt kļūda, ko apzīmē ar parametru 'onRejected'.

Piezīme. Tātad solījuma galvenais aspekts ir atgriešanās vērtība. Strādājot ar parastajiem atzvaniem vietnē Node.js, nav atgriezeniskās vērtības jēdziena. Atgriešanās vērtības dēļ mums ir lielāka kontrole par to, kā var definēt atzvanīšanas funkciju.

Nākamajā tēmā mēs redzēsim solījumu piemēru un to, kā viņi gūst labumu no atzvanīšanas.

Atzvani solījumiem

Tagad apskatīsim piemēru, kā mēs varam izmantot "solījumus" no Node.js lietojumprogrammas. Lai solījumus izmantotu Node.js lietojumprogrammā, vispirms ir jālejupielādē un jāinstalē solījuma modulis.

Pēc tam mēs pārveidosim savu kodu, kā parādīts zemāk, kas atjaunina Employeename kolekcijā Employee, izmantojot solījumus.

1. solis) NPM moduļu instalēšana

Lai izmantotu solījumus no Node JS lietojumprogrammas, ir nepieciešams solījumu modulis. Lai instalētu solījumu moduli, palaidiet zemāk esošo komandu

npm instalēt solījumu

2. solis. Modificējiet kodu, lai iekļautu solījumus

var Promise = require('promise');var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url).then(function(err, db) {db.collection('Employee').updateOne({"EmployeeName": "Martin"}, {$set: {"EmployeeName": "Mohan"}});});

Koda skaidrojums: -

  1. Pirmajā daļā ir jāiekļauj solījuma modulis, kas ļaus mums izmantot solījuma funkcionalitāti mūsu kodā.
  2. Tagad mēs varam pievienot funkciju “toreiz” mūsu funkcijai MongoClient.connect. Tas nozīmē, ka tad, kad ir izveidots savienojums ar datu bāzi, mums ir jāizpilda pēc tam definētais koda fragments.
  3. Visbeidzot, mēs definējam mūsu koda fragmentu, kas veic darbinieka EmployeeName atjaunināšanu ar vārdu "Martin" uz "Mohan".

Piezīme:-

Ja tagad pārbaudīsit savas MongoDB datu bāzes saturu, jūs atradīsit, ka, ja ieraksts ar EmployeeName ir "Martin", tas tiks atjaunināts uz "Mohan".

Lai pārbaudītu, vai dati ir pareizi ievietoti datu bāzē, MongoDB ir jāizpilda šādas komandas

  1. Izmantojiet EmployeeDB
  2. db.Employee.find ({EmployeeName: Mohan})

Pirmais paziņojums nodrošina, ka esat izveidojis savienojumu ar EmployeeDb datu bāzi. Otrajā paziņojumā tiek meklēts ieraksts, kura darbinieka vārds ir "Mohan".

Darbs ar ligzdotiem solījumiem

Nosakot solījumus, jāatzīmē, ka pati metode "tad" dod solījumu. Tātad savā ziņā solījumus var ligzdot vai savienot viens ar otru.

Tālāk sniegtajā piemērā mēs izmantojam ķēdi, lai definētu 2 atzvanīšanas funkcijas, kuras abas ievieto ierakstu MongoDB datu bāzē.

( Piezīme : ķēdes ir jēdziens, ko izmanto, lai sasaistītu metožu izpildi savā starpā. Pieņemsim, ka jūsu lietojumprogrammai bija 2 metodes, ko sauc par “methodA” un “methodB”. Un loģika bija tāda, ka “methodB” būtu jāsauc pēc “methodA”. tad ķēdi izpildījāt tā, lai metodi “metodiB” sauktu tieši aiz “metodesA”.)

Galvenais, kas jāņem vērā šajā piemērā, ir tas, ka kods kļūst tīrāks, lasāms un uzturams, izmantojot ligzdotus solījumus.

var Promise = require('promise');var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url).then(function(db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"}).then(function(db1) {db1.collection('Employee').insertOne({Employeeid: 5,EmployeeName: "NewEmployee1"})})});

Koda skaidrojums: -

  1. Tagad mēs definējam 2 "toreiz" klauzulas, kuras tiek izpildītas viena pēc otras. Pirmajā klauzulā mēs nododam parametru 'db', kas satur mūsu datu bāzes savienojumu. Pēc tam mēs izmantojam savienojuma “db” kolekcijas rekvizītu, lai ierakstus ievietotu kolekcijā “Darbinieks”. Metode 'insertOne' tiek izmantota, lai ievietotu faktisko dokumentu darbinieku kolekcijā.
  2. Pēc tam mēs izmantojam arī otro klauzulu, lai datu bāzē ievietotu vēl vienu ierakstu.

Ja tagad pārbaudīsit savas MongoDB datu bāzes saturu, atradīsit 2 ierakstus, kas ievietoti MongoDB datu bāzē.

Pielāgota solījuma izveide

Pielāgotu solījumu var izveidot, izmantojot mezgla moduli ar nosaukumu “q”. Bibliotēka q ir jālejupielādē un jāinstalē, izmantojot mezglu pakotņu pārvaldnieku. Pēc bibliotēkas 'q' izmantošanas var izsaukt metodi "denodeify", kuras rezultātā jebkura funkcija kļūs par funkciju, kas atgriež solījumu.

Tālāk sniegtajā piemērā mēs izveidosim vienkāršu funkciju ar nosaukumu "Pievienot", kas pievienos 2 skaitļus. Mēs pārveidosim šo funkciju par funkciju, lai atgrieztu solījumu.

Kad tas būs izdarīts, mēs izmantosim solījumu, ko sniegusi funkcija Pievienot, lai parādītu ziņojumu konsolē.log.

Izpildīsim tālāk norādītās darbības, lai izveidotu mūsu pielāgoto funkciju, lai atgrieztos solījumā.

1. solis) NPM moduļu instalēšana

Lai izmantotu “q” no mezgla JS lietojumprogrammas, ir nepieciešams “q” modulis. Lai instalētu moduli 'q', palaidiet zemāk esošo komandu

npm instalēt q

2. solis. Definējiet šādu kodu, kas tiks izmantots, lai izveidotu pielāgoto solījumu.

Koda skaidrojums: -

  1. Pirmais bits ir iekļaut bibliotēku 'q', izmantojot vajadzīgo atslēgvārdu. Izmantojot šo bibliotēku, mēs varēsim definēt jebkuru funkciju, lai atgrieztu atzvanīšanu.
  2. Mēs izveidojam funkciju ar nosaukumu Add, kas pievienos 2 skaitļus, kas definēti mainīgajos a un b. Šo vērtību summa tiks saglabāta mainīgajā c.
  3. Pēc tam mēs izmantojam q bibliotēku, lai denodificētu (metodi, ko izmanto, lai jebkuru funkciju pārveidotu par funkciju, kas atgrieztu solījumu) mūsu funkcijai Add vai citādi pārveidotu funkciju Add par funkciju, kas atgriež solījumu.
  4. Tagad mēs saucam par mūsu funkciju "Pievienot" un varam iegūt atgriešanās solījuma vērtību iepriekšējās darbības dēļ, kuru mēs veicām, lai denodeificētu funkciju Pievienot.
  5. Atslēgvārds 'then' norāda, ka, ja funkcija tiek veiksmīgi izpildīta, tad konsolē.log parādiet virkni "Papildināšanas funkcija pabeigta".

Kad tiek izpildīts iepriekš minētais kods, izvade "Papildināšanas funkcija pabeigta" tiks parādīta konsolē.log, kā parādīts zemāk.

Kopsavilkums

  • Atzvana funkciju izmantošanai Node.js ir savi trūkumi. Dažreiz izstrādes procesa laikā atzvana funkciju ligzdota izmantošana var padarīt kodu vājāku un grūti uzturamu.
  • Lielāko daļu problēmu ar ligzdotajām atzvanīšanas funkcijām var mazināt, izmantojot solījumus un ģeneratorus vietnē node.js
  • Solījums ir vērtība, ko atgriež asinhronā funkcija, lai norādītu asinhronās funkcijas veiktās apstrādes pabeigšanu.
  • Apsolījumus var ievietot savā starpā, lai padarītu kodu labāku un vieglāk uzturamu, kad pēc citas asinhronās funkcijas jāizsauc asinhronā funkcija