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

我对诺言并不十分熟悉,但是我在代码中实现了一些,并且确实希望在诺言被拒绝时从客户端出现警报。

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

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

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

这在我的stock.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);
        } 
    });
};

如果客户端上的用户将信息放入与SQL调用不配合的NewItem对象中,则我需要一种方法来提醒该用户该信息尚未保存/更新。截至目前,这对用户来说有点误导,因为如果他们输入了被拒绝的内容,那么看起来好像从他们的末端成功了。

如果有人有出色的解决方案!谢谢。

编辑

这是我的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个不同的文件,所以这就是为什么我只放入与该特定调用实际相关的代码片段。

maomaoaijie 回答:当承诺被拒绝时,在服务器端显示警报客户端

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

在我的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中找到的布尔值,并能够获得此回调值。

现在看起来像这样

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

如果这个承诺被拒绝或解决,我现在可以从客户端获取更新。

本文链接:https://www.f2er.com/3070002.html

大家都在问