2016-04-24 10 views
0

ich für eine App benötigen würde dieses parametter zu einem Versprechen zu binden, und ich kann nicht finden, wie dies zu tun ...Javascript - Binden eines dieser Parameter auf Versprich

Hier ist genau das, was ich will tun:

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

Ich möchte "dieses", um den Wert zu haben, den ich will. Da ich es draußen definieren muss.

Ist es möglich?

Hinweis: Ich möchte diese Lösung vermeiden:

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

Da der Code wirklich schwer macht.

+0

Ich bekomme Ihre Frage nicht. Wenn der Code, den Sie vorgestellt haben, genau das ist, was Sie wollen, was ist dann das Problem? – Bergi

Antwort

2

Pfeil Funktion hat eine lexikalische „this“ Bindung, thus it gets "this" from the enclosing context.

Wenn Sie binden durch angegeben haben möchten, sollten Sie mit bind versuchen. Beispielcode:

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

Hallo Jakub Rożek. Vielen Dank für Ihre Antwort. Aber für mich funktioniert es nicht. Ich habe es versucht: var that = "bloublou"; var p = new Versprechen (Funktion (auflösen, ablehnen) { console.log (this); } .bind (das)); p.then(); Aber es protokolliert das Versprechen, und nicht die Zeichenfolge "bloublou" – Poyoman

+0

Funktioniert hier gut. Sind Sie sicher, dass Sie die richtige Zeile in der Konsole gelesen haben? Es gibt das Versprechen zurück, aber die Ausgabe der Konsole ist das gewünschte "Dies". Allerdings müssen Sie eine Sache bemerken, wenn Sie die Zeichenfolge mit bind übergeben, müssen Sie console.log ("" + this); –

+0

Oh ja du hast Recht! Vielen Dank für Ihre Antwort. – Poyoman