Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺是如何产生的?_Javascript_Node.js_Promise - Fatal编程技术网

Javascript 承诺是如何产生的?

Javascript 承诺是如何产生的?,javascript,node.js,promise,Javascript,Node.js,Promise,我对承诺对象的理解如下: var Promise = { then: function() { ... }, catch: function() { ... } }; 如果下面的代码有一个函数并返回一个承诺对象(fetch.js): 然后在我的index.js中,我会: var fetch = require('./fetch'); var promise = fetch("some_url"); 从var promise=fetch(“some_url”)返回的promi

我对承诺对象的理解如下:

var Promise = { 
    then: function() { ... },
    catch: function() { ... }
};
如果下面的代码有一个函数并返回一个承诺对象(
fetch.js
):

然后在我的
index.js
中,我会:

var fetch = require('./fetch');
var promise = fetch("some_url");
var promise=fetch(“some_url”)返回的promise对象的结构如何已形成


newpromise(…)
部分的
fetch.js
中,您正在将函数传递给构造函数。我以前从未见过类似的情况,我想知道
新承诺(…)中的
解析
拒绝
参数是如何实现的
部分被传递到上面示例Promise对象中的
然后
catch
键。

我无法解释,但向您展示了函数如何获得解析值或catch get error

获取一个变量,并对该变量作出保存承诺 然后执行下面的示例中的函数

var a = new Promise(function (resolve, reject) {
    resolve(1);
})
a.then();
当您执行a.then()时,它将获得两个参数PromiseStatus和PromiseValue。在PromiseStatus中,您将获得它是resolved或reject,在PromiseValue中,您将获得通过resolve或reject处理程序传递的值

Promise
__proto__
:
Promise
catch:catch()
constructor: Promise()
then:then()
Symbol(Symbol.toStringTag):"Promise"
__proto__:Object[[PromiseStatus]]:"resolved"[[PromiseValue]]:1

我无法解释,但向您展示了示例then函数如何获取解析值或catch get error

获取一个变量,并对该变量作出保存承诺 然后执行下面的示例中的函数

var a = new Promise(function (resolve, reject) {
    resolve(1);
})
a.then();
当您执行a.then()时,它将获得两个参数PromiseStatus和PromiseValue。在PromiseStatus中,您将获得它是resolved或reject,在PromiseValue中,您将获得通过resolve或reject处理程序传递的值

Promise
__proto__
:
Promise
catch:catch()
constructor: Promise()
then:then()
Symbol(Symbol.toStringTag):"Promise"
__proto__:Object[[PromiseStatus]]:"resolved"[[PromiseValue]]:1

因此它说,
PromiseCapability是一个记录值,用于封装承诺对象以及能够解析或拒绝该承诺对象的函数。
但是“能够解析或拒绝的函数”是如何从
新承诺(解析,拒绝){…}中提取出来的)
constructor?请看这篇文章和链接的stackoverflow问题,嗯,好的,我会试着去理解。所以它说,
PromiseCapability是一个记录值,用于封装承诺对象以及能够解析或拒绝该承诺对象的函数。
但是“能够解析或拒绝的函数”是从
newpromise(resolve,reject){…}
构造函数中提取出来的?请看这篇文章和链接的stackoverflow问题,嗯,好的,我会尽力理解的。另请看Promise值将把你作为函数中的一个参数,就像这个a.then(函数(res){})在res中,您将获得PromiseValue,因此当您创建新承诺并访问[[PromiseValue]]时,.then方法基本上就在那里(基本上是空的),您可以使用传递给then方法和[[PromiseValue]]的函数调用then将被传递到您传递到的函数的参数。然后?可能是的,因为在我们不使用handler函数then或catch之前,我们无法获取PromiseValueSee也可以将PromiseValues作为then函数中的参数,如下面的a.then(函数(res){})在res中,您将获得PromiseValue,因此当您创建新承诺并访问[[PromiseValue]]时,.then方法基本上就在那里(基本上是空的),您可以使用传递给then方法和[[PromiseValue]]的函数调用then将传递给您传递给的函数的参数。然后?可能是,因为除非我们不使用handler函数,否则无法获取PromiseValue