반응형
약속 함수에 매개 변수를 전달하는 방법
이것은 어리석은 질문으로 보일 수도 있지만 저는 이 주제에 처음입니다.저는 노드 j에 대한 약속을 하고 있습니다.그리고 저는 약속 함수에 매개 변수를 전달하고 싶습니다.하지만 저는 그것을 알아낼 수 없었습니다.
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"));
}
});
약속을 함수 안에 넣으십시오. 그렇지 않으면 약속이 즉시 수행되기 시작합니다.또한 다음 기능에 매개 변수를 전달할 수 있습니다.
var some_function = 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"));
}
});
};
그런 다음 사용합니다.
some_module.some_function(username, password).then(function (uid) {
// stuff
});
ES6:
const some_function = (username, password) => {
return new Promise((resolve, reject) => {
/* stuff using username, password */
if (/* everything turned out fine */) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
});
};
사용:
some_module.some_function(username, password).then((uid) => {
// stuff
});
다른 방법(반드시 시도해야 함):
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);
훨씬 더 짧음
var foo = (user, pass) =>
new Promise((resolve, reject) => {
if (/* condition */) {
resolve("Fine");
} else {
reject("Error message");
}
});
foo(user, pass).then(result => {
/* process */
});
인수가 있는 함수에서 약속을 반환할 수 있습니다.다음과 같이:
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...
});
정확하게 이해했는지는 모르겠지만 약속에서 다른 함수로 인수를 전송하려면 다음과 같은 작업을 수행할 수 있습니다.
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)
})
.bind()를 사용하여 파라미터(이 값)를 함수에 전달할 수 있습니다.
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"}));
이것이 오래된 것이라는 것을 알지만, 이것은 누군가 구글을 통해 파고드는 것을 도울 수 있습니다.이것은 약속 함수에 2개의 매개 변수를 전달하고 해결될 때까지 기다리는 보다 실제적인 예입니다.이게 도움이 되길 바랍니다.setTimeout은 "처리 시간"을 시뮬레이션합니다.3초 후에 약속에서 값이 반환되고 화면에 인쇄됩니다.
const addNumbers = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000);
});
};
let getResult = async (a, b) => {
let value = await addNumbers(a, b);
console.log(value);
};
getResult(1, 3);
나는 이것을 사용합니다.
let verifyEmail = (email) => new Promise((resolve, rejected) => {
let rsp = {isRepeated:false}
let sql = `select id from users where email='${email}' `
try{
db.query(sql, (err,result)=>{
if(!err){
if(result.length > 0){
rsp = {isRepeated:true}
}
}
})
resolve(rsp)
}catch(e){
rejected({ok:false,err:e})
}
})
언급URL : https://stackoverflow.com/questions/35318442/how-to-pass-parameter-to-a-promise-function
반응형
'source' 카테고리의 다른 글
jQuery를 사용하여 URL 변경 및 리디렉션 (0) | 2023.08.17 |
---|---|
나는 파이썬으로 바이낸스 데이터를 스트리밍하고 있지만 내 mariadbdb에 삽입하면 가격이 반올림됩니다. (0) | 2023.08.17 |
투명 배경의 신속한 모달 뷰 컨트롤러 (0) | 2023.08.17 |
어느 것이 더 빠릅니까?SELECT * 또는 SELECT column1, column2, column3 등 (0) | 2023.08.17 |
pip가상 환경 대신 글로벌 사이트에 설치 (0) | 2023.08.17 |