Ayuda a los programadores (tanto la espalda como en el front -end) a evitar la complejidad de los sistemas de gestión de estado tradicionales como React Redux y la biblioteca de patrones de programación reactiva como RXJS. Es liviano y fácil de usar, la biblioteca contiene una función de un núcleo y un gancho para React. Al usarlo, podemos suscribir vastas la mayoría del tipo de datos, como primitivo, complejo, promesas y funciones como un servicio y recibir todos los cambios por parámetro particular (suscripción paramétrica). Ni siquiera necesitamos controlar el proceso de suscripción-no sucripción en React con el gancho simple, hace todo el proceso automáticamente.
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" ) ; Utilizando el nombre de métodos avanzados incorporado [servidor] envuelve axios para obtener datos de recuperación del servidor HTTP y localforge para los datos de caché. La siguiente muestra usa clase [servidor] como entrada de Asservice. Puede usar su propia biblioteca XHR en lugar de esto.
if http: //myserver/contacts/getcontact.ctrl http el servicio de descanso existe.
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 ) ) ; El estado actual de un servicio es que los estados observables pueden ser uno de ["inicio", "carga", "inactivo"]
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 puede usar el argumento del constructor con mapeador deferente pero el mismo cargador. Esto es útil para derivar un servicio de otro. Es importante si desea disminuir el número de complejidad de los servicios y aumentar la reutilización del código.
const ser1 = new AsService ( [ 5 , 6 , 7 , 8 ] ) ;
const ser2 = new AsService ( ser1 , /*mapper*/ a => a . map ( b => b * 2 ) ) ; //=> [10,12,14,16] Puede crear un nuevo servicio derivado de otro servicio utilizando MAP Operator. Este operador envía datos y parámetros a la función mapper. Los parámetros de mapper pueden ser más que los parámetros del cargador.
/*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 ) )Licencia: MIT