Javascript 在服务器端拒绝承诺时显示警报客户端

Javascript 在服务器端拒绝承诺时显示警报客户端,javascript,socket.io,es6-promise,Javascript,Socket.io,Es6 Promise,我不太熟悉承诺,但我有一些承诺是在我的代码中实现的,我真的希望在承诺被拒绝时从客户端显示一个警报 这是我正在呼叫客户端的套接字 socket.emit('updateExistingItem',NewItem,(布尔值)=>{}); NewItem是一个包含要发送的字段的对象 这将调用我的inventory.js文件中的承诺 export const updateExistingItem=(ItemObject)=>{ 返回新承诺(异步(解析、拒绝)=>{ 试一试{ const updateE

我不太熟悉承诺,但我有一些承诺是在我的代码中实现的,我真的希望在承诺被拒绝时从客户端显示一个警报

这是我正在呼叫客户端的套接字

socket.emit('updateExistingItem',NewItem,(布尔值)=>{});
NewItem是一个包含要发送的字段的对象

这将调用我的inventory.js文件中的承诺

export const updateExistingItem=(ItemObject)=>{
返回新承诺(异步(解析、拒绝)=>{
试一试{
const updateExistingItem=`UPDATE console.inventory\u items SET Description='${(ItemObject.Description)。replace(/\'/g,“”}),Location='${(ItemObject.Location)。replace(/\'/g,“”}),modelnumer='${(ItemObject.modelnumer)。replace(/\'/g,“”}`
const response=await db(updateExistingItem,`updateitem`);
决心(回应);
}捕获(e){
console.log(“ERROR inventory.updateExistingItem:+e”);
拒绝(e);
} 
});
};
如果客户端的用户在NewItem对象中输入的信息与SQL调用不配合,我需要一种方法来提醒该用户该信息未保存/更新。就目前而言,这对用户来说有点误导,因为如果他们输入了get被拒绝的内容,那么它看起来就像是从他们那里成功了一样

如果有人有解决方案,那就太棒了!谢谢

编辑

这是我的sockets.js文件中的套接字

socket.on('updateExistingItem',异步(ItemObject,回调)=>{
试一试{
const results=await updateExistingItem(ItemObject);
如果(results.affectedRows==1){
回调(true);
}
回调(假);
}
捕获(错误){}
});
正在我的server.js文件中使用的SocketIO

var server = http.createServer(app);
const io = socketIO(server);

io.on('connection', (socket) => {

    require('./middleware/sockets')(socket);


});

有4个不同的文件在使用它们,所以这就是为什么我只放与这个特定调用相关的片段。

好的,所以我能够自己找到一个合适的解决方案

在sockets.js文件中的socket中,我在catch方法中放置了一个回调,如下所示

socket.on('updateExistingItem',异步(ItemObject,回调)=>{
试一试{
const results=await updateExistingItem(ItemObject);
如果(results.affectedRows==1){
回调(true);
}
回调(假);
}
捕获(错误){
回调(假);
}
});
从那时起,我决定控制台记录在客户端socket.emit中找到的布尔值,并能够得到这个回调值作为回报

现在看起来像这样

socket.emit('updateExistingItem',NewItem,(布尔值)=>{
if(布尔){
警报(“成功!”);
}否则{
警报(“未成功!”);
}
});

如果此承诺被拒绝或得到解决,我现在会从客户端获得更新。

使用的
socket.emit
语句在哪里-如果
db
函数是它的一部分吗?此外,服务器在请求失败后如何响应?它是否将socket.io事件发送回客户端?!“这是我调用客户端
socket.emit('updateExistingItem',NewItem,(boolean)=>{});
”-我在这里没有看到任何与承诺相关的内容,也没有看到如何调用承诺返回
updateExistingItem
函数。您需要向我们展示该套接字连接代码的服务器端。@Bergi我刚刚更新了我的问题。我不能在这里发布完整的文件,主要是因为它们是相当大的文件,而这些是我们在本例中需要的唯一部分,这些文件中的其余部分只是更多与其他调用相关的套接字。@Michael谢谢!我不知道socketio的细节,什么是
callback(true)做什么?可能您也应该从
catch()
块调用它,而不是忽略错误。