Javascript 承诺一直悬而未决,并且;然后";或;捕获;没有触发。反应
我正在学习如何反应。如果你有任何关于这段代码的提示,请分享,这对我来说非常重要:) 为什么这个承诺不起作用 在控制台中显示挂起状态 承诺:Javascript 承诺一直悬而未决,并且;然后";或;捕获;没有触发。反应,javascript,reactjs,ecmascript-6,promise,nodes,Javascript,Reactjs,Ecmascript 6,Promise,Nodes,我正在学习如何反应。如果你有任何关于这段代码的提示,请分享,这对我来说非常重要:) 为什么这个承诺不起作用 在控制台中显示挂起状态 承诺: _server.get(`/select`, (req, res) => { return DefaultSQL.select(table).then((result) => { return result }).catch((err) => {
_server.get(`/select`, (req, res) => {
return DefaultSQL.select(table).then((result) => {
return result
}).catch((err) => {
console.log(err)
});
})
export const getData = (url) => {
const response = Server.get(url) status
return response.then((result) => { // <- Not firing
return result
}).catch((err) => { // <- Not firing too
console.log(err);
})
}
class DefaultSQL {
select(table) {
const sql = `SELECT * FROM ${table}`;
return Db.conn.query(sql).then((result) =>
result
).catch((err) => {
console.log(err)
});
}
...
我称之为承诺:
_server.get(`/select`, (req, res) => {
return DefaultSQL.select(table).then((result) => {
return result
}).catch((err) => {
console.log(err)
});
})
export const getData = (url) => {
const response = Server.get(url) status
return response.then((result) => { // <- Not firing
return result
}).catch((err) => { // <- Not firing too
console.log(err);
})
}
class DefaultSQL {
select(table) {
const sql = `SELECT * FROM ${table}`;
return Db.conn.query(sql).then((result) =>
result
).catch((err) => {
console.log(err)
});
}
...
编辑:
_server.get(`/select`, (req, res) => {
return DefaultSQL.select(table).then((result) => {
return result
}).catch((err) => {
console.log(err)
});
})
export const getData = (url) => {
const response = Server.get(url) status
return response.then((result) => { // <- Not firing
return result
}).catch((err) => { // <- Not firing too
console.log(err);
})
}
class DefaultSQL {
select(table) {
const sql = `SELECT * FROM ${table}`;
return Db.conn.query(sql).then((result) =>
result
).catch((err) => {
console.log(err)
});
}
...
当我将“return result”更改为“return res.json(result)”时,承诺不会一直挂起,但是我调用承诺的地方会出现一个错误,表示“response”不是函数您应该
重新显示错误/抛出一个新错误
以再次捕获错误
这是一个例子:
Promise.reject(“在演示1中抛出”)
.catch((e)=>{
console.log(“捕获”,e)
})
.catch((e)=>{
//未到达块
console.log(“无法重新匹配”,e)
})
承诺。拒绝(“在演示2上抛出”)
.catch((e)=>{
console.log(“捕获”,e)
掷e
})
.catch((e)=>{
console.log(“重新匹配”,e)
})
我在哪里拒绝?不是你Db.conn.query(sql)
出现错误时将被拒绝。我在您的代码中发现了另一个问题。我刚刚更新了帖子,里面没有“res”。有一种方法可以更改内部错误的状态。\u服务器内部应该有“res”。获取范围。在DefaultSQL内部,请重新显示错误。似乎您将服务器端代码与客户端代码混为一谈。服务器上的路由处理程序函数必须写入响应,而不是返回承诺。请向我们展示您的服务器实现。获取。这一定是关于response
不是函数的客户端错误的来源。