代码之家  ›  专栏  ›  技术社区  ›  shamon shamsudeen

异步等待不解析/拒绝结果

  •  -2
  • shamon shamsudeen  · 技术社区  · 6 年前

    下面是我的异步等待示例代码

    控制器

    const {addUserInterestService} = require('../services/profile.js');
    const addUserInterest = async  function (req,res,next){
        try{
            let params ={
                id:req.user.userId,
                userInterests:['5bb2597ca8729e19ddaf13a8']
            };
            let result = await addUserInterestService(params);
            console.log(result);
        }catch(error){
            console.log(error);
        }
    
    }
    

    /服务/profile.js

        const User = require('../models/User');
        const addUserInterestService = async (params)=>{
    
            console.log(params);
            return new Promise((resolve,reject)=>{
                User.update({
                    _id:params.id,
                },{
                    '$addToSet':{userInterest:{'$each':params.userInterests}}
                })
            },(err,result)=>{
                console.log("async",err,result);
                if(err){
                    reject(err,null);
                }
                 resolve(null,result);
            })
    
        }
    
        module.exports ={
            addUserInterestService
        }
    

    但这个承诺在这里没有解决 console.log(result);

    1 回复  |  直到 6 年前
        1
  •  0
  •   yBrodsky    6 年前

    const addUserInterestService = async (params)=>{
    
        const result = await User.update({
          _id:params.id,
        },{
         '$addToSet':{userInterest:{'$each':params.userInterests}}
        });
    
        return result;
    
    }
    

    我猜User.update会返回一个承诺,所以您可以这样做。

    const addUserInterestService = (params)=> {
    
      return User.update({
        _id:params.id,
      },{
        '$addToSet':{userInterest:{'$each':params.userInterests}}
      });
    }
    

    const yourFunction = () => new Promise((resolve, reject) => {
      // do whatever
      return resolve('data');
    });