相关疑难解决方法(0)

有没有办法在ie9 +中实现promise

我试图在IE9 +上实现原生承诺,似乎Internet Explorer不识别"Promise"类/对象.我在http://caniuse.com/#search=Promise中搜索并看到IE没有Promise对象.但这很奇怪,因为jQueryAngular可以使用promises并在IE9 +中工作. 也许他们正在实施自己的承诺?**我可以实现自己的承诺吗?**

javascript jquery internet-explorer promise angularjs

27
推荐指数
1
解决办法
3万
查看次数

ES5与ES6的承诺

我想知道JS承诺是否是es5的一部分?如果是这样,为什么它有时在旧版浏览器中不起作用,我们必须为它添加一个polyfill.另外,在这种情况下应该添加哪种polyfill,es5 one或es6?我对此有点困惑.

javascript promise es6-promise

17
推荐指数
1
解决办法
2万
查看次数

单线程JavaScript下的动画

JavaScript是单线程语言,因此它一次只执行一个命令.异步编程通过Web API(用于事件处理的DOM,用于AJAX调用的XMLHttpRequest,用于setTimeout的WindowTimers)和由浏览器管理的事件队列来实现.到现在为止还挺好!现在考虑一下,以下非常简单的代码:

$('#mybox').hide(17000);
console.log('Previous command has not yet terminated!');
... 
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释上面的基本机制吗?由于.hide()还没有完成(动画持续17秒)并且JS引擎正在处理它并且它能够一次执行一个命令,它以哪种方式进入下一行并继续运行剩下的代码?

如果您的答案是动画创建了promises,那么问题仍然是:JavaScript如何同时处理多个事物(执行动画本身,在承诺的情况下观察动画队列并继续执行下面的代码). ..).

此外,我无法解释jQuery中的promises如何工作,如果他们必须观察他们的父Deferred对象,直到它被解析或拒绝 ,这意味着代码执行,同时执行剩余的代码.这怎么可能在单线程方法中?理解AJAX调用我没有问题,因为我知道它们被JS引擎带走了......

javascript single-threaded jquery-animate

7
推荐指数
1
解决办法
1003
查看次数

简单的承诺然后实现

最近,向我展示了一段代码,这些代码是在全栈开发人员访谈中被要求的。它涉及创建一个Promise,应聘者应在其中实现,将其传递给resolve函数,然后将2链接起来。

我试图非常天真地实现Promise只是为了使代码正常工作。创建了一个接受解析器函数的ctor,创建了一个then函数,该函数接受一个回调并返回Promise,并简单地在resolver函数上调用该回调。

class MyPromise {

    constructor(resolver) {
        this.resolver = resolver;
    }

    then(callback) {
        const result = new MyPromise(callback);
        this.resolver(callback);

        return result;
    }
}

promise = new MyPromise(
    (result) => {
        setTimeout(result(2), 500);
    });
promise.then(result => {
    console.log(result);
    return 2 * result;
}).then(result => console.log(result));
Run Code Online (Sandbox Code Playgroud)

预期结果是2,4-就像在真正的Promise上运行一样。但是我得到了2,2。我在弄清楚如何获取第一个“ then”的返回值并将其传递时遇到了麻烦。

javascript promise

7
推荐指数
1
解决办法
203
查看次数

JavaScript Promise 如何在幕后工作

当承诺产生和消耗时,我对幕后发生的事情感到非常困惑。请澄清我的观点,并对我的英语不好表示歉意。

  1. 使用 new 关键字创建空白对象 Promise 构造函数被调用,并且 new 关键字设置 Promise 构造函数的 this 指向空白对象 this = Blankobject。
  2. Promise 构造函数接收参数中的回调(执行器函数)并调用执行器函数。
  3. 执行器函数接收两个回调(resolve、reject)作为参数
  4. setTimeout 在执行器函数中被调用,setTimeOut 是异步代码
  5. 异步代码进入后台,然后 Promise 构造函数返回以前为空白对象的 Promise 对象,并将 Promise 对象引用保存到 myPromise。
  6. 创建了一个变量

接下来发生什么 ?当then方法被调用时,方法的代码then会转到后台吗?我想它会进入后台,变量是 console.log // 10

主代码执行完成后,异步代码启动setTimeout回调开始执行,执行完成后,promise 得到满足,resolved 函数返回值。这个值如何存储在 Promise 对象中以及then方法中发生了什么?

let myPromise = new Promise (
    (resolve, reject) => {

        setTimeout(() => {
            console.log(getIDs)
            resolve(10);

        }, 1500);

    }
)


let a = 10
        myPromise.then(val => {
            console.log(val);

        })
        console.log(a)
Run Code Online (Sandbox Code Playgroud)

javascript promise es6-promise

5
推荐指数
1
解决办法
2395
查看次数

在 ES6 JavaScript 中,为什么 then() 的执行处理程序返回的承诺与 then() 返回的承诺不同?

我有一些方块从页面上滑下来,以链接的承诺方式:https : //jsfiddle.net/u4x0qwfo/3

代码是:

new Promise(function(resolve, reject) {
  $("#shape").css({
    top: 100
  });
  setTimeout(function() {
    resolve();
  }, 1000);
}).then(function() {
  return new Promise(function(resolve, reject) {
    $("#shape2").css({
      top: 100
    });
    setTimeout(function() {
      resolve();
    }, 1000);
  });
}).then(function() {
  return new Promise(function(resolve, reject) {
    $("#shape3").css({
      top: 100
    });
    setTimeout(function() {
      resolve();
    }, 1000);
  });
}).then(function() {
  return new Promise(function(resolve, reject) {
    $("#shape4").css({
      top: 100
    });
    setTimeout(function() {
      resolve();
    }, 1000);
  });
});
Run Code Online (Sandbox Code Playgroud)

(该代码在此处的代码段内运行效果不佳:此处第一个方块最初已经向下滑动)。

因此,要查看履行处理程序返回的承诺以及 返回的承诺.then(),我有https://jsfiddle.net/u4x0qwfo/10/

代码是:

let foobar;

let …
Run Code Online (Sandbox Code Playgroud)

javascript es6-promise

2
推荐指数
1
解决办法
86
查看次数

理解Promises/A +规范

承诺/ A +规范是最小规范之一.因此,实施它是理解它的最佳方式.Forbes Lindesay的以下答案向我们介绍了实现Promises/A +规范,Basic Javascript promise实现尝试的过程.但是,当我测试它时,结果并不令人满意:

? 109 tests passed
? 769 tests failed
Run Code Online (Sandbox Code Playgroud)

很明显,Promises/A +规范并不像看起来那么容易实现.您将如何实现规范并向新手解释您的代码?Forbes Lindesay在解释他的代码方面表现非常出色,但遗憾的是他的实现不正确.

javascript promise

1
推荐指数
1
解决办法
1837
查看次数