Javascript 如何将参数传递给promise函数
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/35318442/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to pass parameter to a promise function
提问by kundante
this might seem a silly question but I am a newbie in this topic. I am working on promises on node js. And I want to pass parameter to a promise function. However I could not figure it out.
这似乎是一个愚蠢的问题,但我是这个主题的新手。我正在处理 node js 上的承诺。我想将参数传递给一个承诺函数。但是我想不通。
someModule.someFunction.then(username, password,function(uid) {
/*stuff */
}
and the function is something like
功能类似于
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"));
}
});
回答by Shanoor
Wrap your Promise inside a function or it will start to do its job right away. Plus, you can pass parameters to the function:
将您的 Promise 包裹在一个函数中,否则它会立即开始工作。另外,您可以将参数传递给函数:
var someFunction = function(username, password) {
return new Promise(function(resolve, reject) {
/*stuff using username, password*/
if ( /* everything turned out fine */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
});
}
Then, use it:
然后,使用它:
someModule.someFunction(username, password).then(function(uid) {
/* stuff */
})
ES6:
ES6:
const someFunction = (username, password) => {
return new Promise((resolve, reject) => {
/*stuff using username, password*/
if ( /* everything turned out fine */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
});
};
Use:
用:
someModule.someFunction(username, password).then(uid => {
/* stuff */
});
回答by sadiq
Another way(Must Try):
另一种方式(必须尝试):
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
var extraData = 'ImExtraData';
promise1.then(function(value) {
console.log(value, extraData);
// expected output: "Success!" "ImExtraData"
}, extraData);
回答by gogog
You can use .bind() to pass the param(this) to the function.
您可以使用 .bind() 将 param( this) 传递给函数。
var someFunction =function(resolve, reject) {
/* get username, password*/
var username=this.username;
var password=this.password;
if ( /* everything turned out fine */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
}
var promise=new Promise(someFunction.bind({username:"your username",password:"your password"}));