2016-01-09 79 views
-1

我在以下代碼中找不到我的錯誤。 我想要的是保存()返回true或false,但它始終undefinedPromise未解析爲值?

function mypromise() { 
    return new Promise((resolve, reject) => { 
    resolve("it worked") 
    }) 
} 

function save() { 
    mypromise().then(success => { 
    return true 
    }, error => { 
    return false 
    }); 
} 

var saveSuccessful = save(); 
console.log('success', saveSuccessful) // undefined ? 
+0

你的回調中的代碼是異步執行的。 – madox2

+0

你的函數'save()'不返回任何東西 - 你期望什麼? –

+0

@BenjaminGruenbaum當我做'保存mypromise()。然後()'我得到未決的承諾回來。有沒有辦法直接返回值? – Hedge

回答

0

你就會知道,如果保存成功,只有當承諾已執行完畢,就像這樣:

function mypromise() { 
    return new Promise((resolve, reject) => { 
    resolve("it worked") 
    }) 
} 

function save() { 
    mypromise().then(success => { 
    console.log('success'); 
    return true; 
    }, error => { 
    return false 
    }); 
} 

save(); 

如果你可以寫var saveSuccessful = save();這將意味着save()同步,由定義的同步,但你明確希望它是異步

+0

等待,是不是我的代碼? – Hedge

+0

那麼,不,它不是 – Ilya

+0

並參閱http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call獲取更多詳細信息。 – Ilya