Javascript承诺中的动态链接

拉穆·阿杰(Ramu Ajay)

每次我只看到硬编码的调用时,如何在Javascript Promises中执行动态链接,例如,(promise).then(request/functionName).then(request/functionName)

杰森·威尔恰克(Jason Wilczak)

一种选择是利用对象的属性以及通过字符串调用它们的能力。

在这里写了一个小样本并将其发布在下面。

这个想法是,您希望在某些名称空间或对象中设置一组要运行的函数,就像在“ myNamespace”中所做的那样:

myNamespace = {
    "A": function() {return "A Function";},
    "B": function() {return "B Function";},
    "C": function() {return "C Function";}
}

然后您的主要诺言将运行,并且以某种方式(通过输入,ajax,提示等),您将获得要运行的函数的字符串值,直到运行时才知道:

我的主要承诺是使用提示从用户那里收到一封信:

var answer = prompt('Starting.  Please pick a letter: A,B,C');
        if(myNamespace[answer] === undefined)
        {
            alert("Invalid choice!");
            reject("Invalid choice of: " + answer);
        }
        else
        {
            resolve(answer);
        }

在下一个“ then”中,我使用该值(通过resolve函数传递)来调用该函数:

.then(function(response) {
        funcToRun = myNamespace[response]();})

最后,我将动态函数调用的结果输出到html,并使用一些递归乐趣使它更具交互性并证明它是动态的:

.then(function(){
        document.getElementById('result').innerHTML = funcToRun;})
    .then(function(){
        if(prompt("Run Again? (YES/NO)")==="YES")
        {
            doWork();
        }
    });

myNamespace = {
    "A": function() {return "A Function";},
    "B": function() {return "B Function";},
    "C": function() {return "C Function";}
}

function doWork()
{
    var funcToRun;
    
    new Promise(function(resolve,reject) {
        var answer = prompt('Starting.  Please pick a letter: A,B,C');
        if(myNamespace[answer] === undefined)
        {
            alert("Invalid choice!");
            reject("Invalid choice of: " + answer);
        }
        else
        {
            resolve(answer);
        }
    })
    .then(function(response) {
        funcToRun = myNamespace[response]();})
    .then(function(){
        document.getElementById('result').innerHTML = funcToRun;})
    .then(function(){
        if(prompt("Run Again? (YES/NO)")==="YES")
        {
            doWork();
        }
    });
}

doWork();
<div id="result"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

本机Javascript中的链接承诺

来自分类Dev

本机Javascript中的链接承诺

来自分类Dev

在JavaScript中动态创建SVG链接

来自分类Dev

在JavaScript中从RSS结果创建动态链接

来自分类Dev

如何在JavaScript中动态链接方法

来自分类Dev

更改Javascript中的动态链接文本

来自分类Dev

在JavaScript中从RSS结果创建动态链接

来自分类Dev

打字稿中的链接承诺

来自分类Dev

使用Javascript将动态链接嵌套到动态列表中

来自分类Dev

javascript中的递归承诺

来自分类Dev

解决JavaScript中的承诺

来自分类Dev

使用JavaScript的动态链接

来自分类Dev

了解JavaScript承诺;堆栈和链接

来自分类Dev

链接包含嵌套AJAX调用的JavaScript承诺

来自分类Dev

如何链接JavaScript的承诺和错误

来自分类Dev

Javascript 使用 async/await 传递/链接承诺

来自分类Dev

动态链接中的动态链接“ thenReturn”

来自分类Dev

Angular JS 中的链接承诺问题

来自分类Dev

无法在 Ionic 3 中链接承诺

来自分类Dev

在 componentWillMount 中链接 api - 异步等待或承诺

来自分类Dev

Chrome中的JavaScript承诺/延迟

来自分类Dev

Typescript / Javascript中的复合承诺?

来自分类Dev

在javascript中终止挂起的承诺

来自分类Dev

IF函数中的动态超链接

来自分类Dev

链接Javascript时使用精简序列承诺范围问题

来自分类Dev

用JavaScript链接在一起的承诺

来自分类Dev

如何 .then 链接但需要之前承诺的 resolve() 值 - javascript?

来自分类Dev

异步 javascript,承诺链接 - 解析后不会执行函数

来自分类Dev

在Firebase动态链接的ios中获取动态链接URL