gpt4 book ai didi

javascript - 在 javascript 中解析值

转载 作者:行者123 更新时间:2023-11-30 08:37:38 25 4
gpt4 key购买 nike

我有以下代码:

function doSomething() {
//xhr here
setTimeout(function() {
var value = 42;
}, 10);
return {
then: function(callback) {
callback(value);
}
};
}

doSomething().then(function(result) {
log("got a result", result);
});

并且不知道如何访问该值。我需要这是基于 promise 的解决方案,以便在多个地方使用 JSFidle link

更新:我们没有在该项目中使用任何库

最佳答案

这里有几个问题:

  1. value 是您传递给 setTimeout 的函数的本地值,因为这是您声明它的地方。您可以通过在 doSomething 中声明来解决此问题。

  2. 更大的问题是你所拥有的不是一个 promise ,它只是一个函数,当你调用它时返回一个对象,它有一个 then 方法。以下是事情发生的顺序:

    1. 你调用doSomething

    2. 它设置一个定时器来设置一个值。

    3. 它使用 then 函数创建一个对象。

    4. 返回对象。

    5. 您立即调用 then 函数。

    6. then 尝试访问 value(由于声明问题,它不能访问,但无论如何都会有问题)。

    7. 一段时间后value 由计时器触发时的回调设置。

    作为一个 promise ,您返回的对象的 then 函数必须存储对传递给它的回调的引用,并在 later 调用回调,当 value 已设置(例如, promise 已履行)。

与其实现您自己的 promises 库,我建议您使用已经编写和调试过的多个 promises 库之一。

关于javascript - 在 javascript 中解析值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988667/

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