Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 承诺一直悬而未决,并且;然后";或;捕获;没有触发。反应_Javascript_Reactjs_Ecmascript 6_Promise_Nodes - Fatal编程技术网

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
不是函数的客户端错误的来源。