如何在JavaScript的context promise的then块中访问输入值?

How can we access input values in the then block of context promise in JavaScript?

本文关键字:访问 输入 promise JavaScript context then      更新时间:2023-09-26

如何在JavaScript中访问上下文承诺块中的输入值?请参阅下面的代码片段。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)}`)
});

如果你在then函数中返回一个对象那么它会返回一个带有相同对象的新promise所以你可以

getPromise(someData).then(function(data) {  
  return {"input": someData, "output": data};
}).then(function(obj) {
    console.log(obj.input);
    console.log(obj.output);
});