gpt4 book ai didi

javascript - 从回调访问 'this' 范围变量

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:15 25 4
gpt4 key购买 nike

我是一个 javascript 新手,我对以下代码有疑问。我正在尝试通过回调设置价格值,但不起作用...请问有什么帮助吗?

PreInvoiceSchema.pre('save', function(next) {

//Seperating code from state
var codestate = addr[2].split(/[ ,]+/);
this.customer.zipcode = codestate[2];
this.customer.state = codestate[1];

//Calculating base price
if (this.order_subtype == "Upgrade") {
this.price = 30;
} else {
this.price = 50;
}
var self = this;

for (var j = 0; j < this.work.length; j++) {

Price.findOne({
"item": self.work[j].workproduct
}, function(err, val) {
if (self.work[j] != undefined) {
self.work[j].workprice = 300; <-- this doesn't work
}
});
});

最佳答案

如果我没记错的话,闭包会获取 j 的最后一个值。所以如果迭代从 0 运行到 3 那么你总是有 self.work[3].workprice = 300; (尝试追踪)。

尝试使用li库lodash并将你的代码变成这样的:

_.each(this.work, function(item) {
Price.findOne(
{ "item": item.workproduct },
function(err, val) {
// item.workprice ...
}
);
});

此外,如果这是真正的代码,那么它在最后一个“)”之前缺少“}”。

关于javascript - 从回调访问 'this' 范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137651/

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