2016-07-27 5 views
-1
... 
var me = 'you'; 
return aPromise(); 
}).then(data => { 
    // i want me here 
}) 

function aPromise() { 
    return new q.Promise((resolve, reject) => { 
     resolve(iReturnAnObject()); 
    }, reject); 
}); 

thenメソッドの範囲内にme変数が必要です。約束を含む複数の値を返します

... 
var me = 'you'; 
return [aPromise(), me]; 
}).then(data => { 
    let promise, me; 
    [promise, me] = data; 
    console.log(promise); //incomplete object 
}) 

promise変数は、オブジェクト全体のaPromiseが含まれません()を返す必要があり、それはまだ保留中です:私のような何かをしよう。

+0

達成しようとしている目的が何であるかを明確にすることはできますか?あなたのコード例も不完全です。 – Bamieh

+0

'aPromise()'関数は何を行い、何が返されますか? – Maxx

+0

実際には、 'promise'は正確にオブジェクト' aPromise() 'を返します。もしaPromiseが未完成の約束を返すならば、約束が満たされるまで未定義のままです。 –

答えて

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(...) 
}) 
0
somePromise.then(() => { 
    const me = 'you'; 
    return aPromise().then(aPromiseData => Promise.resolve({aPromiseData, me})) 
}).then(data => { 
    const {aPromiseData, me} = data; 
}) 
+2

Whileこのコードは質問に答えて、* how *や* why *が問題を解決するかどうかに関する追加の文脈を提供して、回答の長期的価値を向上させるかもしれない。 –

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()に渡す方が簡単かもしれません。

関連する問題