我是koa.js的新手,非常喜欢它,因此开始了一个项目。我需要使用twilio进行短信发送。
对twilio软件包的大多数调用都遵循此结构。
public.get('/najam', function *(){
this.body = "hello from najam";
//yeild before c.sendSms or inside callback?
c.sendSms({
to:'YOUR_PHONE',
}, function(e, m) {
if (!e) {
//yeild here?
}
});
});
我如何修改它以将其放入生成器函数中?在什么时候我将使用yield关键字?
如果您的答案建议使用Co库,请提供示例代码和位说明。
只需在Promise中包装基于回调的接口,就可以在路由中产生它。
function sendSms(toPhone, textMessage) {
return new Promise(function(resolve, reject) {
c.sendSms({ to: toPhone, message: textMessage }, function(err, result) {
if (err) return reject(err);
resolve(result);
});
});
}
现在,您可以在路线内部生成它。如果它抛出错误(如网络中断),则Koa的默认错误处理程序将捕获该错误并将其转换为500错误。
public.get('/najam', function *(){
this.body = "hello from najam";
yield sendSms('YOUR_PHONE', 'SOME_MESSAGE');
});
或者,如果您想以某种特定方式处理错误,则可以自己尝试/捕获它:
public.get('/najam', function *(){
this.body = "hello from najam";
var result;
try {
result = yield sendSms('YOUR_PHONE', 'SOME_MESSAGE');
} catch(err) {
// Maybe we just wanna log the error to a server before rethrowing
// it so Koa can handle it
logError(err);
throw err;
}
});
当用Promise包装东西时,只需reject(err)
在出现错误以及resolve(result)
成功完成时调用即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句