gpt4 book ai didi

javascript - 从 Promise 访问 'this' 之外的 JavaScript

转载 作者:行者123 更新时间:2023-11-30 08:23:29 27 4
gpt4 key购买 nike

我什至不知道如何表达我的问题,在我完全搞砸之前,这是我的代码:

className.prototype.requestData = function (start, end) {
client.server.functionName(parameters)
.done(function (msg) {
if (msg) {
this.process(msg); //this belongs to client, not className as I want
}
})
.fail(function (error) {
console.log('failed: ' + error);
});
}

如你所见,我需要调用process来对返回的数据进行操作,我不想使用我为它定义的变量,我想使用this,我猜这是不可能的,有没有更好的方法来实现我的目标?

谢谢

最佳答案

如果你在 ES6 中工作,你可以使用 async/await:

className.prototype.requestData = async function (start, end) {
try {
let result = await client.server.functionName(parameters);
if (result ) {
this.process(result);
}
} catch (err) {
console.log('failed: ' + err);
}
}

如果你想“链接”它们,你可以这样做:

try {
let result = await client.server.functionName(parameters);
if (result) {
this.process(result);
}
// You can just call each in succession
let other_result = await client.server.someOtherAsyncFunc(other_params);
if(other_result) {
// Do more stuff
}
} catch (err) {
console.log('failed: ' + err);
}

// You can still call more promise-based functions after the try-catch block
let some_result = await client.server.yetAnotherAsyncFunc(more_params);
// Do other stuff with some_result

关于javascript - 从 Promise 访问 'this' 之外的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737530/

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