Node.JS承诺然后添加范围

时间:2017-05-16 16:30:16

标签: javascript node.js promise

使用promise是否有更好的方法在Node.JS中执行以下操作:

var y = "...";

promise.using(getDatabaseConnection() function(connection) {
  return connection
    .query("some sql")
    .then(function(result) {callAnotherFunction(result, y);}
    .catch(function(error) {callAnotherFunction(error, y);}
});

这有效,但看起来有点笨拙/难以阅读。我试过了:

.then(callAnotherFunction.bind(null, y))

如另一篇SO帖子和

所示
.then(callAnotherFunction(y))

只是希望有一个非常简单的解决方案,但都没有效果。

谢谢!

2 个答案:

答案 0 :(得分:3)

我看到你在这里使用LicenseGenerator.exe "C:\Folder\input.xml" "C:\Folder\output.xml" 所以假设蓝鸟,也将假设现代节点:

$inputtest = "C:\Folder\Input.xml"
$outputtest = "C:\Folder\Output.xml"
$licensegen = "C:\Folder\LicenseGenerator.exe"

Invoke-Command $licensegen "$inputtest" "$outputtest"

虽然,函数应该只返回结果的承诺,而不是调用延续,因为它更可组合这种方式。

答案 1 :(得分:1)

当然你可以这样设置:

const callAnotherFunction = function(y) {
 return function(result) {
   console.log('y',y);
   console.log('result',result);
   return 'something'
 }
}

promise.using(getDatabaseConnection() function(connection) {
  return connection
    .query("some sql")
    .then(callAnotherFunction(y))
    .catch(callAnotherFunction(y))
});