我们如何在JavaScript中的上下文承诺块中访问输入值?请参阅下面的代码段。可以多次调用processInServer()。
function processInServer(someData){
return getPromise(someData).then(function(data) {
return {"input": someData, "output": data};
});
}
var a1 = processInServer(someData1);
var a2 = processInServer(someData2);
答案 0 :(得分:1)
您可以将getPromise
调整为返回对象的构造函数。将someData
,Promise
设置为返回对象的属性。然后,可以在对象引用以及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);
});