怎么用js回调函数实现在两个网页之间传接参数功能,其中一个网页是另一个网页的内嵌页(iframe)

JavaScript010

怎么用js回调函数实现在两个网页之间传接参数功能,其中一个网页是另一个网页的内嵌页(iframe),第1张

父窗口可以在取得iframe对象以后(document.getElementById)以后(比如ifa),用ifa.function1()来调用iframe里面window.function1函数,iframe里面的js可以用parent.function2()来调用父窗口里面的window.function2函数。

赋值的话就更简单了,ifa.aaa = 0,就是把子窗口里面的window.aaa赋值为0了,子窗口里面的js直接用window.aaa就可以取得这个值,同理,iframe里面的js用parent.bbb = 1,就是把父窗口的window.bbb赋值为1了,父窗口就可以用window.bbb来取用这个值了。

作为一名程序猿,经常遇到回调函数的情况,原生js的回调函数是一层一层的嵌套调用,而es6提供了一种新的写法,Promise,它可以把原本的嵌套回调函数实现成横向的调用,即链式调用。

下面看一个Promise的简单用法:

接着开始模拟:

首先,_Promise构造函数会接收一个函数resolver并执行,函数中又包含resolve和reject两个参数,然后,_Promise构造函数生成的实例有三种状态,分别是pending(初始值)、fullfilled(成功)和rejected(失败),且由pending变为成功或者失败后状态不可逆。

resolve和reject函数执行的时候会先判断状态,如果是pending则执行,且将状态变为fullfilled或者rejected,并将resolve/reject函数中参数传递给_result,以便then函数调用时使用。

因为有可能存在链式调用,所以执行then函数的返回值需要判断,如果isResolve或者isReject函数返回的是一个新的_Promise实例,则返回这个实例,否则返回当前实例

至此,Promise已经模拟完成~