Code Monkey home page Code Monkey logo

async-request's Introduction

@lancercomet/async-request

Make http requests by using axios in the @Decorator way.

Quick Start

import { Injectable } from '@vert/core'
import { asyncRequestFactory, IAsyncRequestResult } from '@lancercomet/async-request'
import { Account } from '../model'

const AsyncRequest = asyncRequestFactory()

@Injectable()
class UserService {
  @AsyncRequest({
    url: '/user/v1/data',
    onError (error) {
      this.toast.error('Failed to fetch user data, please try again.')
      this.logger.error('Failed to fetch user data:', error)
    }
  })
  async getUserData (data: { id: number }): Promise<IAsyncRequestResult<Account>> {
    return null
  }

  @AsyncRequest({
    url: '/user/v1/data',
    method: 'post',
    onSuccess (response) {
      this.toast.success('User data has been updated.')
    },
    onError (error) {
      this.toast.error('Failed to update user data, please try again.')
      this.logger.error('Failed to update user data:', error)
    }
  })
  async updateUserData (data: Account): Promise<IAsyncRequestResult<void>> {
    return null
  }

  constructor (
    private toast: Toast,
    private logger: Logger
  ) {
  }
}

export {
  UserService
}
import { AppComponent, Component } from '@vert/core'
import { UserService } from '../services'
import { Account } from '../model'

@Component
export default class UserPanel extends AppComponent {
  private inProcess: boolean = false
  private userData: Account = null

  private async getUserData (id: number) {
    this.inProcess = true
    const { data, error } = await this.userService.getUserData({ id })
    this.inProcess = false

    if (!error) {
      this.userData = data
    }
  }

  private async updateUserData () {
    this.inProcess = true
    await this.userService.updateUserData(this.userData)
    this.inProcess = false
  }

  mounted () {
    this.getUserData(this.$route.params.id)
  }

  constructor (
    private userService: UserService
  ) {
    super()
  }
}

API

To be added.

Please check index.d.ts for now.

async-request's People

Contributors

lancercomet avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.