source

약속 함수에 매개 변수를 전달하는 방법

nicesource 2023. 8. 17. 21:26
반응형

약속 함수에 매개 변수를 전달하는 방법

이것은 어리석은 질문으로 보일 수도 있지만 저는 이 주제에 처음입니다.저는 노드 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

반응형