kun*_*nte 87 javascript node.js promise
这似乎是一个愚蠢的问题,但我是这个主题的新手.我正在研究节点js上的promises.我想将参数传递给promise函数.但是我无法理解.
someModule.someFunction.then(username, password,function(uid) {
/*stuff */
}
Run Code Online (Sandbox Code Playgroud)
和功能是类似的
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"));
}
});
Run Code Online (Sandbox Code Playgroud)
Sha*_*oor 172
将你的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"));
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后,使用它:
someModule.someFunction(username, password).then(function(uid) {
/* stuff */
})
Run Code Online (Sandbox Code Playgroud)
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"));
}
});
};
Run Code Online (Sandbox Code Playgroud)
使用:
someModule.someFunction(username, password).then(uid => {
/* stuff */
});
Run Code Online (Sandbox Code Playgroud)
另一种方法(必须尝试):
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);Run Code Online (Sandbox Code Playgroud)
小智 7
您可以在带有参数的函数中返回您的承诺。像这样:
function someFunction(username, password) {
return new Promise((resolve, reject) => {
// Do something with the params username and password...
if ( /* everything turned out fine */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It didn't work!"));
}
});
}
someFunction(username, password)
.then((result) => {
// Do something...
})
.catch((err) => {
// Handle the error...
});
Run Code Online (Sandbox Code Playgroud)
更短
var foo = (user, pass) =>
new Promise((resolve, reject) => {
if (/* condition */) {
resolve("Fine");
} else {
reject("Error message");
}
});
foo(user, pass).then(result => {
/* process */
});
Run Code Online (Sandbox Code Playgroud)
不确定是否理解正确,但为了将参数从 Promise 发送到另一个函数,你可以这样做:
function logUser(username, password){
return new Promise((resolve, reject) => {
let response = 'user logged in'
resolve(response)
})
}
function showMessage(msg){
console.log(msg)
}
logUser('user', 'pass').then((respFromLogUser) => {
showMessage(respFromLogUser)
})Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72827 次 |
| 最近记录: |