如何将参数传递给promise函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将参数传递给promise函数相关的知识,希望对你有一定的参考价值。

这似乎是一个愚蠢的问题,但我是这个主题的新手。我正在研究节点js上的promises。我想将参数传递给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);

以上是关于如何将参数传递给promise函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 URL 中的数组作为参数传递给 Promise.all

如何将不同的参数传递给片段 [导航] Android

如何使用底部导航视图和 Android 导航组件将参数传递给片段?

Promise:如何传递带参数的函数? [复制]

Promises,将附加参数传递给 then 链

使用 promise/thunk 通过 action 将参数传递给 reducer