2015-10-26 2 views
0

я мог бы что-то не хватает в какой-то момент, но я не совсем понимаю, почему это работает:Узел обработчика д обещание не вызывается с уже определенной функцией

app.post('/check-setup-auth', function(req, res) { 
    db.isAuthorizedToInstall() 
    .then(function(data) { 
     res.status(200).json(data); 
    }); 
    }); 

В то время как это, не

app.post('/check-setup-auth', function(req, res) { 
    db.isAuthorizedToInstall() 
    .then(res.status(200).json); 
    }); 

Я ожидал, что это приведет к тому же, но как-то данные разрешения от обещания не передаются функции res.json; или функция не вызвана.

Я использую:

  • Linux 3.19.0-31-родовое # 36-Ubuntu x86_64 x86_64 x86_64 GNU/Linux
  • nodejs v4.1.1
  • выразить 2.14.4
+0

Да, похоже, что это дубликат –

ответ

1

Существует большая разница между двумя кодами.

В первом коде res.status(200) выполнен после окончания db.isAuthorizedToInstall().

Во втором коде res.status(200) выполнен до конца db.isAuthorizedToInstall().

res.status(200) начните писать заголовки ответа. Таким образом, это может помешать некоторым другим кодам писать в ответе.

Я думаю, что функция вызывается во втором коде, но поведение ответа не совпадает. Таким образом, у вас может быть другой код, нарушающий это.

Смежные вопросы