ช่วยโปรแกรมเมอร์ (ทั้งด้านหลังและด้านหน้า) เพื่อหลีกเลี่ยงความซับซ้อนของระบบการจัดการสถานะแบบดั้งเดิมเช่น React Redux และไลบรารีรูปแบบการเขียนโปรแกรมแบบปฏิกิริยาเช่น RXJS มันมีน้ำหนักเบาและใช้งานง่ายไลบรารีมีฟังก์ชั่นหลักหนึ่งฟังก์ชั่นและเบ็ดสำหรับการตอบสนอง ด้วยการใช้มันเราสามารถสมัครสมาชิกประเภทข้อมูลส่วนใหญ่เช่นดั้งเดิมที่ซับซ้อนสัญญาและฟังก์ชั่นเป็นบริการและรับการเปลี่ยนแปลงทั้งหมดโดยพารามิเตอร์เฉพาะ (การสมัครสมาชิกพารามิเตอร์) เราไม่จำเป็นต้องควบคุมกระบวนการสมัครสมาชิก UNSubscribe ใน React ด้วย hook อย่างง่ายมันจะทำทุกกระบวนการโดยอัตโนมัติ
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" ) ; การใช้ชื่อวิธีการขั้นสูงในตัว [เซิร์ฟเวอร์] ห่อ Axios สำหรับข้อมูลย้อนกลับจากเซิร์ฟเวอร์ HTTP และ LocalForge สำหรับข้อมูลแคช ตัวอย่างต่อไปนี้ใช้คลาส [เซิร์ฟเวอร์] เป็นอินพุตของ asservice คุณสามารถใช้ไลบรารี XHR ของคุณเองแทนสิ่งนี้
ถ้า http: //myserver/contacts/getContact.ctrl HTTP REST Service มีอยู่
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", "โหลด", "idle"]
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 สามารถใช้อาร์กิวเมนต์ของตัวสร้างด้วยการเลื่อนเวลา แต่โหลดตัวโหลดเดียวกัน สิ่งนี้มีประโยชน์ในการรับบริการจากอื่น ๆ เป็นสิ่งสำคัญหากคุณต้องการลดจำนวนบริการที่ซับซ้อนและเพิ่มความสามารถในการนำรหัสกลับมาใช้ใหม่
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = new AsService ( ser1 , /*mapper*/ a => a . map ( b => b * 2 ) ) ; //=> [10,12,14,16] คุณสามารถสร้างบริการใหม่ที่ได้จากบริการอื่นโดยใช้ตัวดำเนินการแผนที่ ตัวดำเนินการนี้ส่งทั้งข้อมูลและพารามิเตอร์ไปยังฟังก์ชั่น 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 ) )ใบอนุญาต: MIT