Have ideas to improve npm?Join in the discussion! »

    await-to-js
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.0 • Public • Published

    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

    DownloadsWeekly Downloads

    535,794

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    1.16 MB

    Total Files

    19

    Last publish

    Collaborators

    • avatar