إنه يساعد المبرمجين (كل من الواجهة الخلفية والأمامية) على تجنب تعقيد أنظمة إدارة الدولة التقليدية مثل React Redux ومكتبة نمط البرمجة التفاعلية مثل RXJS. إنه خفيف الوزن وسهل الاستخدام يحتوي على وظيفة أساسية واحدة وخطاف للرد. باستخدامه ، يمكننا الاشتراك في غالبية نوع البيانات مثل البدائية والمعقدة والوعود والوظيفة كخدمة وتلقي جميع التغييرات حسب معلمة معينة (اشتراك حدودي). نحن لا نحتاج حتى إلى التحكم في عملية الاشتراك غير المشترك في الرد مع الخطاف البسيط ، يقوم بكل العملية تلقائيًا.
npm i @ barteh/as-service --save import { AsService , Server } from "@barteh/as-service" ; var srv1 = new AsService ( 5 ) ; // number as service
srv1 . Observable ( )
. subscribe ( a => console . log ( "ser1 data via observable is:" , a ) ) ;
srv1 . load ( ) . then ( a => console . log ( "ser1 data via promis:" , a ) ) ; var srv2 = new AsService ( { x : 9 } ) ; // object as service
srv2 . Observable ( )
. subscribe ( a => console . log ( "ser2 data via observable is:" , a ) ) ;
srv2 . load ( ) . then ( a => console . log ( "ser2 data via promis:" , a ) ) ; var srv3 = new AsService ( param => param * 3 ) ; // function as service
srv3 . Observable ( 2 ) //parametric observe
. subscribe ( a => console . log ( "ser3 data via observable is:" , a ) ) ;
//passing (Number) 2 as parameter
srv3 . load ( 2 ) . then ( a => console . log ( "ser3 data via promis:" , a ) ) ; var ser4 = new AsService ( param => new Promise ( ( res , rej ) => res ( `im promise with parameter: ${ param } ` ) ) ) ;
ser4 . Observable ( "myparam" )
. subscribe ( a => console . log ( "srv4: " , a ) ) ;
ser4 . load ( "myparam" ) ; باستخدام اسم الأساليب المتقدمة المدمجة [Server] يلتف Axios لإعادة بيع البيانات من HTTP Server و LocalForge لبيانات ذاكرة التخزين المؤقت. يستخدم العينة التالية الفئة [الخادم] كمدخلات للاعتداء. يمكنك استخدام مكتبة XHR الخاصة بك بدلاً من هذا.
إذا كان http: //myserver/contacts/getContact.ctrl http rest arme regh.
import { AsService , Server } from "@barteh/as-service"
var controller1 = ( x , y ) => Server . controller ( "contacts" , "getcontact" , { name : x , lname : y } ) ;
var srv5 = new AsService ( controller1 ) ;
srv5 . Observable ( "Ahad" , "Rafat" )
. subscribe ( a => console . log ( "srv5:" , a ) ) ; الوضع الحالي للخدمة هي أن حالات يمكن ملاحظتها يمكن أن تكون واحدة من ["start" ، "تحميل" ، "خمول"]
var srv6 = new AsService ( 8 ) ;
srv6 . StateObservable ( 77 ) . subscribe ( a => console . log ( "current state is: " , a ) )
srv6 . load ( 77 ) ; > ser1 data via observable is: 5
> ser2 data via observable is: { x: 9 }
> ser3 data via observable is: 6
> srv4: im promise with parameter: myparam
ASN Asservice يمكن أن تستخدم وسيطة من مُنشئ مع MAPPER تأجيل ولكن نفس المحمل. هذا مفيد لاشتقاد خدمة من غيرها. من المهم إذا كنت ترغب في تقليل عدد تعقيد الخدمات وزيادة إعادة استخدام الكود.
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = new AsService ( ser1 , /*mapper*/ a => a . map ( b => b * 2 ) ) ; //=> [10,12,14,16] يمكنك إنشاء خدمة جديدة مستمدة من خدمة أخرى باستخدام مشغل MAP. يرسل هذا المشغل كلاً من البيانات والمعلمة إلى mapper وظيفة. يمكن أن تكون معلمات MAPPER أكثر من معلمات المحمل.
/*map(data,...params)*/
const ser1 = new AsService ( ( x , y ) => x + y ) ;
const ser2 = ser1 . map ( ( data , x , y , z ) => data + z ) ;
ser1 . load ( /*x*/ 1 , /*y*/ , 2 , /*z*/ , 3 )
. then ( a => console . log ( a ) ) ;
// output
// > 6
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = ser1 . map ( a => a . filter ( b => b < 7 ) ) ; // ==> [5,6] npm test
npm run build
var { AsService } = require ( "@barteh/as-service" ) ;
var t = new AsService ( 8 ) ;
t . Observable ( )
. subscribe ( a => console . log ( a ) )الترخيص: معهد ماساتشوستس للتكنولوجيا