我们如何在JavaScript的上下文承诺的then块中访问输入值?请参见下面的代码段。 processInServer()可能被调用多次。

function processInServer(someData){
    return getPromise(someData).then(function(data) {
      return {"input": someData, "output": data};
    });
}
var a1 = processInServer(someData1);
var a2 = processInServer(someData2);

最佳答案

您可以将getPromise调整为返回对象的构造函数。将someDataPromise设置为返回对象的属性。这样,someData应该可以在对象引用以及Promise对象处访问。使用链接到对象上的承诺集的.then()来查看承诺值和输入值。



function getPromise(someData) {
  this.someData = someData;
  this.promise = Promise.resolve(someData * Math.random() * Math.PI);
}

var gp = new getPromise(123);
var result = gp.promise.then(function(data) {
  return {
    "input": gp.someData,
    "output": data
  };
});

result.then(function(result) {
  console.log(`result:${JSON.stringify(result, null, 2)}`,
              `gp:${JSON.stringify(gp, null, 2)}`)
});

关于javascript - 我们如何在JavaScript的上下文 promise 的then块中访问输入值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39460963/

10-13 09:01