...
var me = 'you';
return aPromise();
}).then(data => {
// i want me here
})
function aPromise() {
return new q.Promise((resolve, reject) => {
resolve(iReturnAnObject());
}, reject);
});
我希望me
方法范围内的then
变量。如果我尝试这样的话:
...
var me = 'you';
return [aPromise(), me];
}).then(data => {
let promise, me;
[promise, me] = data;
console.log(promise); //incomplete object
})
promise
变量不包含aPromise()应该返回的整个对象,它仍处于未决状态。
答案 0 :(得分:1)
你可以嵌套承诺:
...
var me = 'you';
return aPromise().then(data => {
// me is here
})
否则,您必须包装已解析值的数组:
...
var me = 'you';
return Promise.all([aPromise(), me]);
}).then(data => {
let [promise, me] = data;
// use me here
promise.then(...)
})
答案 1 :(得分:0)
somePromise.then(() => {
const me = 'you';
return aPromise().then(aPromiseData => Promise.resolve({aPromiseData, me}))
}).then(data => {
const {aPromiseData, me} = data;
})
答案 2 :(得分:0)
如果我正确理解了您的问题,您可以将var注入成功回调。
const other = 'other var';
const promise = new Promise(
function(resolve, reject) {
window.setTimeout(
function() {
// We fulfill the promise !
resolve('response');
}, 2000);
}
);
// or
promise.then(function(other, response) {
console.log(other, response);
}.bind(null, other))
你能提供更多背景吗?将其他变量传递给resolve()可能更容易。