当承诺被服务器端拒绝时显示警报客户端

Show an alert client side when a promise is rejected server side

我对 promise 不是很熟悉,但是我在我的代码中实现了一些,并且真的希望在 promise 被拒绝时从客户端出现警报。

这是我调用客户端的套接字

socket.emit('updateExistingItem', NewItem, (boolean) => {});

NewItem 是一个包含我要发送的字段的对象。

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

export const updateExistingItem = (ItemObject) => {
    return new Promise(async (resolve, reject) => {        
        try {
            const updateExistingItem = `UPDATE console.inventory_items SET Description = '${(ItemObject.Description).replace(/\'/g, "")}', Location = '${(ItemObject.Location).replace(/\'/g, "")}', ModelNumber = '${(ItemObject.ModelNumber).replace(/\'/g, "")}'`
            const response = await db(updateExistingItem, `Updating Item`);
            resolve(response);
        } catch (e) {
            console.log("ERROR inventory.updateExistingItem: " + e);
            reject(e);
        } 
    });
};

如果客户端的用户在 NewItem 对象中输入的信息不与 SQL 调用配合,我需要一种方法来提醒该用户该信息不是 saved/updated.就目前而言,这对用户来说有点误导,因为如果他们输入的东西被拒绝了,看起来他们最终成功了。

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

编辑

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

socket.on('updateExistingItem', async (ItemObject, callback) => {
        try {
            const results = await updateExistingItem(ItemObject);
            if (results.affectedRows === 1) {
                callback(true);
            }
            callback(false);
        }
        catch (error) {}
    });

我的 server.js 文件中使用了 SocketIO

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

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

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


});

有 4 个不同的文件使用了这些文件,所以这就是为什么我只放置与此特定调用实际相关的片段的原因。

好的,所以我能够自己找到一个不错的解决方案。

在我的 sockets.js 文件中的套接字中,我在 catch 方法中放置了一个回调,就像这样

socket.on('updateExistingItem', async (ItemObject, callback) => {
        try {
            const results = await updateExistingItem(ItemObject);
            if (results.affectedRows === 1) {
                callback(true);
            }
            callback(false);
        }
        catch (error) {
          callback(false);
        }
    });

从那里我决定控制台记录在客户端 socket.emit 中找到的布尔值,并且能够在 return.

中获得此回调值

现在看起来像这样

socket.emit('updateExistingItem', NewItem, (boolean) => {
   if(boolean){
    alert('Successful!');
   }else{
    alert('UnSuccessful!');
   }
});

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