• awaittojs


    await-to-js

    NPM version Downloads

    Async await wrapper for easy error handling

    Pre-requisites

    You need to use Node 7.6 (or later) or an ES7 transpiler in order to use async/await functionality. You can use babel or typescript for that.

    Install

    npm i await-to-js --save

    Usage

    import to from 'await-to-js';
    // If you use CommonJS (i.e NodeJS environment), it should be:
    // const to = require('await-to-js').default;
    
    async function asyncTaskWithCb(cb) {
         let err, user, savedTask, notification;
    
         [ err, user ] = await to(UserModel.findById(1));
         if(!user) return cb('No user found');
    
         [ err, savedTask ] = await to(TaskModel({userId: user.id, name: 'Demo Task'}));
         if(err) return cb('Error occurred while saving task');
    
        if(user.notificationsEnabled) {
           [ err ] = await to(NotificationService.sendNotification(user.id, 'Task Created'));
           if(err) return cb('Error while sending notification');
        }
    
        if(savedTask.assignedUser.id !== user.id) {
           [ err, notification ] = await to(NotificationService.sendNotification(savedTask.assignedUser.id, 'Task was created for you'));
           if(err) return cb('Error while sending notification');
        }
    
        cb(null, savedTask);
    }
    
    async function asyncFunctionWithThrow() {
      const [err, user] = await to(UserModel.findById(1));
      if (!user) throw new Error('User not found');
      
    }

    TypeScript usage

    interface ServerResponse {
      test: number;
    }
    
    const p = Promise.resolve({test: 123});
    
    const [err, data] = await to<ServerResponse>(p);
    console.log(data.test);

    License

    MIT © Dima Grossman && Tomer Barnea

     

    Install

    npm i await-to-js

    Weekly Downloads

    703,281

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    1.16 MB

    Total Files

    19

    Issues

    4

    Pull Requests

    3

    Last publish

    a year ago

    Collaborators

    • scopsy
  • 相关阅读:
    三级菜单
    包的初识和进阶&异常处理
    常用模块一
    flask-script
    DBUtils
    Flask-WTForms
    Flask-SQLAchemy
    Flask
    scrapy-redis的使用和解析
    Django的信号;flask的信号;scrapy的信号;
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16539104.html
Copyright © 2020-2023  润新知