使用await时如何得到err和结果

我有一个函数接收callback作为参数。 例如:

client.sendMessage(params, (status, response) => { console.log('Status: ', status); console.log('API Response:\n', response); }); 

我然后promisify它:

 const Promise = require('bluebird'); const sendMessageFunc: Object = Promise.promisify(client.sendMessage); 

然后我称之为:

 result = await sendMessageFunc(params); 

我其实想要(status, response)然后做:

 (status, response) = await sendMessageFunc(params); console.log('Status: ', status); console.log('API Response:\n', response); 

但是这不是有效的语法。 我该怎么办? 什么是返回给我的“结果”对象?

await要点是将你的asynchronous代码变成一个类似于同步代码的代码,它会抛出一个错误(比如JSON.parse
当等待一个asynchronous函数时 – 如果asynchronous函数返回一个结果 – 就像函数是同步的那样返回,
如果asynchronous函数抛出exception – await重新抛出它,就好像该函数是同步的。

所以,首先,没有“地位”,只有例外。 你应该用try / catch来包围你的awaitexpression式:

 try{ let response = await sendMessageFunc(params); console.log('API Response:\n', response); } catch(e){ console.error('an error was thrown: ' + e.toString()); } 

这个承诺只是实现协程的一个方便的工具(这是asynchronous/等待关键字实际创build的)。 在使用await时不要以承诺的方式来考虑,这只是一个实现细节。