Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Promise未解析,但正在Promise回调内部到达resolve()_Javascript_Mysql_Typescript_Es6 Promise - Fatal编程技术网

Javascript Promise未解析,但正在Promise回调内部到达resolve()

Javascript Promise未解析,但正在Promise回调内部到达resolve(),javascript,mysql,typescript,es6-promise,Javascript,Mysql,Typescript,Es6 Promise,我正在尝试编写一个类似于Laravel中的查询生成器的查询生成器,但是对于TypeScript,我遇到了一个问题 在下面的代码中,我减少了生成器和控制器类。使用这个库,我使用codeconnection.query(…)运行一个查询,我将其传入一个回调函数,该函数处理响应并相应地解析/拒绝。我不明白的是,它到达了控制台.log并将其输出到我的控制台,但是没有调用控制器中的.then() import*作为mysql从“mysql”导入; 接口InternalQueryReturnType{ 结果

我正在尝试编写一个类似于Laravel中的查询生成器的查询生成器,但是对于TypeScript,我遇到了一个问题

在下面的代码中,我减少了生成器和控制器类。使用这个库,我使用code
connection.query(…)
运行一个查询,我将其传入一个回调函数,该函数处理响应并相应地解析/拒绝。我不明白的是,它到达了
控制台.log
并将其输出到我的控制台,但是没有调用控制器中的
.then()

import*作为mysql从“mysql”导入;
接口InternalQueryReturnType{
结果:T;
字段?:mysql.FieldInfo[];
}
//我的生成器的精简版本。
导出类MySQLBuilder实现IQueryBuilder{
受保护查询(查询:字符串):承诺{
返回新承诺((解决、拒绝)=>{
const connection=mysql.createConnection({
主机:“localhost”,
用户:'根',
密码:“”,
数据库:“dbname”,
港口:999,
});
connection.connect({},(错误)=>{
拒绝(错误);
});
查询(查询,(错误、结果、字段)=>{
如果(错误){
拒绝(错误);
返回;
}
//它正在达到这一点。
console.log({results});//{
返回新承诺((解决)=>{
//测试生成器创建的原始查询。
新建MySQLBuilder().query('SELECT*FROM'users',其中'id`=1 LIMIT 1 OFFSET 0')
。然后({results})=>{
//这里面什么都没有。
log({results});
解析(新的JsonResponse(results |{}));
})
.catch((错误)=>{
解析(新的JsonResponse(错误).status(400));
});
//生成器代码。
//新的MySQLBuilder().table('用户')
//.where('id','=',1)
//.first()
//.然后((值:object | null)=>{
//console.log(值);
//解析(新JsonResponse(值|{}));
//   })
//.catch((错误)=>{
//console.error({error});
//解析(新的JsonResponse(错误).status(400));
//   });
});
});
}
}
有没有人在承诺方面遇到过这样的问题

如果你需要完整的代码库,我可以在以后把它全部放上去,但这应该足够了


这个问题的解决办法实际上是:

connection.connect({},(错误)=>{
如果(错误){
拒绝(错误);
}
});

这个问题的解决方案实际上是:

connection.connect({},(错误)=>{
如果(错误){
拒绝(错误);
}
});

我没有检查错误是否为NULL。

所以没有调用
.then
。是否调用了
.catch
(返回400个错误)?没关系,我是一个特殊的雪花。问题是
连接.connect()不检查错误是否为空LOL。您的许多允诺构造函数是奇数的,应该重构,但是如果代码是按原样显示的,它们不应该引起有趣的问题。我认为这是一个与<代码>有关的bug。Connect 方法。如果有错误,它应该包含某种信息。,会认为错误意味着没有错误。在他们的文档中,它确实显示了捕获错误然后抛出错误的所有示例。我会认为是在给出多个参数的函数之间保持一致。例如,
(错误、结果、字段)
。尽管我正在考虑寻找一个不同的MySQL库,因为这个库不支持预先准备好的语句,而且我也不打算推出任何类似的实时版本。