[javascript] 프라 미스 함수에 매개 변수를 전달하는 방법

이것은 어리석은 질문처럼 보일지 모르지만 나는이 주제의 초보자입니다. 노드 js에 대한 약속 작업 중입니다. 그리고 매개 변수를 promise 함수에 전달하고 싶습니다. 그러나 나는 그것을 알아낼 수 없었다.

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"));
  }
});



답변

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"));
    }
  });
}

그런 다음 사용하십시오.

someModule.someFunction(username, password).then(function(uid) {
  /* stuff */
})

 

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"));
    }
  });
};

사용하다:

someModule.someFunction(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 */
});


답변

.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"}));


답변