2016-01-09 33 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