我们如何在JavaScript中的上下文承诺块中访问输入值?

时间:2016-09-13 01:28:24

标签: javascript promise

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

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

2 个答案:

答案 0 :(得分:1)

您可以将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)}`)
});




答案 1 :(得分:0)

如果你在then函数中返回一个对象,那么它会返回一个具有相同对象的新promise,以便你可以这样做

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