【问题标题】:How to write a reusable function in node.js? [duplicate]如何在 node.js 中编写可重用函数? [复制]
【发布时间】:2015-10-27 16:11:31
【问题描述】:

我想重用 findemail 功能

    function findemail(val){
        user.findOne({ email : val }, function (err, person) {
         if(err) throw err;
         if(person == null){
           console.log(false+"1");
           return false;
         }else{
           console.log(true+"1");
           return true;
         }
       });
     }

   router.post('/avail', function(req, res, next){
        \\somecodes
        var email = \\something
        console.log(findemail(email));
        res.send(findemail(email));
   });

在cmd中输出:

   undefined
   true1

我是初学者。谁能帮帮我?

findone 是一种猫鼬方法

【问题讨论】:

  • 你不能直接从像.findOne()这样的异步操作返回值。
  • @jfriend00 这不是那个问题的重复......那个问题并不能解决我的问题......如果你无法回答,那么请忽略我的问题
  • 我的问题是为什么它返回一个未定义的值
  • 仅供参考,这与 node.js 无关。这是“如何在Javascript中处理异步操作的返回值?”,它同样适用于任何Javascript环境,浏览器、node.js、Rhino等。 .

标签: node.js


【解决方案1】:

好的,我建议您阅读其他参考问题以更好地理解异步问题。这是您的代码的解决方案:

  function findemail(val, fn){
        user.findOne({ email : val }, function (err, person) {
            if (err) return fn(false);
            fn(person != null);
       });
   }

   router.post('/avail', function(req, res, next){
        \\somecodes
        var email = \\something
        findemail(email, function(result) {
            res.send(result);
        });
   });

有关从异步操作返回值的更多详细信息,请参阅以下参考资料:

How do I return the response from an asynchronous call?

Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference

Node.JS How to set a variable outside the current scope

Order of execution issue javascript

async.js and series issue

【讨论】:

  • 添加了一堆 node.js 特定的参考资料,它们都展示了如何管理异步操作。
  • 非常感谢。它奏效了。
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多