javascript - Hvordan sende en parameter til et Promise?


Dette kan virke som et dumt spørsmål, men jeg er nybegynner på dette emnet. Jeg jobber med Promises i Nodejs og jeg vil sende en parameter til en Promise-funksjon. Imidlertid klarte jeg ikke å finne ut hvordan jeg skulle gjøre det.

For eksempel:

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

Og funksjonen er noe slik som:

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

Svar #1

Pakk din Promise inn i en funksjon, ellers vil den begynne å gjøre jobben sin med en gang. I tillegg kan du sende parametere til funksjonen:

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

Deretter, bruk det:

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

Bruk :

some_module.some_function(username, password).then((uid) => {
  // stuff
});

Svar #2

En annen måte(Må Prøves):

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

Relaterte artikler