2016-04-24 26 views
0

我需要一個應用程序到這個parametter綁定到一個承諾,我無法找到如何做到這一點?使用Javascript - 綁定此參數答應

這正是我想做:

var myPromise = new Promise((resolve, reject) => { 
    console.log(this); 
}); 
myPromise.then(); 

我想「這個」有我想要的價值。因爲我需要在外面定義它。

可能嗎?

注:我想避免這種情況的解決方案:

var myPromise = (that) => { 
    return new Promise((resolve, reject) => { 
     console.log(that); 
    }) 
} 
myPromise().then(); 

因爲它使代碼真的很重。

+0

我不明白你的問題。如果您提供的代碼已經完全按照您的要求進行,那麼問題是什麼? – Bergi

回答

2

Arrow功能有一個詞彙「這個」結合,thus it gets "this" from the enclosing context.

如果你想有由指定的綁定,你應該嘗試使用bind。示例代碼:

new Promise(function(resolve, reject) { 
    console.log(this); 
}.bind(that)); 
+0

Hi JakubRożek。謝謝您的回答。但對我來說這不起作用。我試過這個: var that =「bloublou」; var p = new Promise(function(resolve,reject){console.log(this); } .bind(that)); p.then(); 但它記錄的承諾,而不是字符串「bloublou」 – Poyoman

+0

在這裏工作很好。你確定你在控制檯上閱讀了正確的一行嗎?它返回Promise,但控制檯的輸出是所需的「this」。然而,你必須注意一件事,如果你使用綁定傳遞字符串,你必須做console.log(「」+ this); –

+0

哦,你是對的!謝謝您的回答。 – Poyoman