簡體   English   中英

是否可以在Promise執行程序函數內設置`this`的值?

[英]Is it possible to set the value of `this` inside a promise executor function?

此代碼是否可能:

var this_module = {

    foo: 'something'

    promise: new Promise (function(resolve, reject) {

        resolve (this.foo);
        })
}

this的值設置為this_module以便this.foo將是foo: 'something'

創建對象並非沒有調用new Promise的情況:

this_module.promise = new Promise(function(...) { ... }.bind(this_module));

這基本上與對象文字聲明中的自我引用中涉及的問題相同:您試圖在初始化期間訪問對象實例,這是不可能的。

您需要使用getter語法:

var this_module = {

    foo: 'something'

    get promise() {
       return new Promise (function(resolve, reject) {
          resolve (this.foo);
       }.bind(this))
    }
}

發生這種情況是因為在將屬性添加到promise: new Promise()時沒有初始化對象本身。
在getter中,該對象已經被初始化,並且回調函數可以與this對象綁定(有關.bind() 更多信息)。

注意:每次訪問屬性時,這將返回一個新的Promise(感謝@Felix)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM