【发布时间】:2018-12-14 13:19:12
【问题描述】:
util.promisify 似乎总是期望回调函数有 2 个参数,但是现有函数没有针对错误和数据的单独回调,而只有一个回调。
我该如何处理???
const {promisify} = require('util');
function y(text,cb){
setTimeout(function(){cb({error:false,data:text})},1000);
}
async function test(text) {
try{
const z = promisify(y)
return await z(text);
} catch(e) {return {error:true,msg:e}}
}
console.log(test('xxx'));
我正在寻找的是从函数 y 同步返回值而不是得到承诺,即
var x = test('xxx');
【问题讨论】:
-
那么当
y出现错误时通常会发生什么(没有promisify?) -
return await new Promise(resolve => y(q, resolve)); -
如果你的回调只接受一个参数那你怎么知道什么时候有错误呢?
-
@PatrickRoberts - 因为在真正的函数中它总是回复 {error:true/false, data:....} - 这只是一个简单的测试来找出语法:-)
-
@FelixKling - 这会返回一个承诺,但我正在寻找的是返回结果而不是一个承诺。