gpt4 book ai didi

javascript - 表示 this 在函数之间返回 null

转载 作者:行者123 更新时间:2023-12-02 23:06:22 25 4
gpt4 key购买 nike

我已经在express中创建了一个模型。我在一个函数中设置 this 但它似乎在另一个函数中返回 null,所以我必须使用 return 代替。

正确的方法是什么?

const Seat = function(seat) {
this.seat = seat.seat;
this.seatNumber = seat.seatNumber;
this.price = seat.price;
this.available = seat.available;
this.disabilityAccessible = seat.disabilityAccessible;
};

Seat.findSeat = (key, value) => {
this.seat = file.find(obj => obj[key] === value);
return this.seat;
};



Seat.bookSeat = function(seatNumber, result) {
this.seat = this.findSeat('seatNumber', seatNumber);
if (this.seat === undefined || Object.keys(this.seat).length === 0) {
result({ error: true, message: "Seat not found" });
}
if(!this.seat.available){
result({ error: true, message: "Seat unavailable to book" });
}
const newSeatData = file.map(row => {
if (row.seatNumber === seatNumber) {
row.available = false;
this.seat = row;
}
return row;
});
fs.writeFileSync("./model/seatData.json", JSON.stringify(newSeatData,null,2), "utf-8", function(err) {
if (err) {
result({ error: true, message: "failed to update booking" });
}
});

result(null, this.seat);
};


module.exports = Seat;

最佳答案

如果您计划在座位实例上调用这些方法,它们必须位于Seat.prototype上,而不是Seat本身。

另请注意,您可能会多次调用 result(...) ,因为调用该函数时不会终止该函数的执行。如果传递回调的代码期望回调被调用一次(可能与您之前的问题有关),则可能会导致问题。

关于javascript - 表示 this 在函数之间返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57578920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com