【发布时间】:2016-05-20 23:54:22
【问题描述】:
这似乎是一个愚蠢的问题,但我是这个主题的新手。我正在研究节点 js 的承诺。我想将参数传递给一个承诺函数。但是我想不通。
someModule.someFunction.then(username, password,function(uid) {
/*stuff */
}
函数类似于
var someFunction = new Promise(username, password, function(resolve, reject) {
/*stuff using username, password*/
if ( /* everything turned out fine */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
});
【问题讨论】:
-
没有理由这样做,你可以在更高的范围内定义
username和password -
但我是从另一个模块调用承诺,而且用户名和密码也不是静态的,而是来自客户端。定义一个函数设置而另一个函数使用的某种全局变量是否安全。是否存在变量被其他客户端更改的风险?
-
@kundante 你不需要任何全局变量。了解闭包。
-
@adeneo 承诺是异步的 - 如果他在第一个承诺解决之前第二次调用该函数怎么办?
-
@adeneo - 请不要回答“没有理由这样做”的问题。你不知道,这是一个非常烦人的反应。这个人可能有特定的原因,为什么他想以他不一定觉得相关的特定方式来做某事。要么可以,要么不能,如果这是一个坏主意,你可以列出原因。显然,正如下面 248 票赞成的答案所表明的那样,这是可以做到的,而且有很多理由这样做。
标签: javascript node.js promise parameter-passing es6-promise