相关疑难解决方法(0)

如何在.then()链中访问先前的promise结果?

我已经将我的代码重组为承诺,并构建了一个由多个回调组成的精彩长扁平承诺链.then().最后我想返回一些复合值,并且需要访问多个中间承诺结果.但是,序列中间的分辨率值不在最后一个回调的范围内,我该如何访问它们?

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Some processing
        return promiseB(…);
    }).then(function(resultB) {
        // More processing
        return // How do I gain access to resultA here?
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript scope promise bluebird es6-promise

607
推荐指数
10
解决办法
18万
查看次数

在node.js中嵌套的promises是否正常?

在学习node.js时,我一直在努力解决两周的问题是如何使用node进行同步编程.我发现无论我如何按顺序做事,我总是以嵌套的承诺结束.我发现有一些模块如Q可以帮助保证链的承诺链.

做研究时我不明白的是Promise.all(),Promise.resolve()Promise.reject().Promise.reject通过名称几乎可以自我解释但是在编写应用程序时,我很困惑如何在不破坏应用程序行为的情况下将任何这些包含在函数或对象中.

当来自Java或C#等编程语言时,node.js肯定存在学习曲线.仍然存在的问题是如果promise.js中的promise链接是正常的(最佳实践).

例:

driver.get('https://website.com/login').then(function () {
    loginPage.login('company.admin', 'password').then(function () {
        var employeePage = new EmployeePage(driver.getDriver());

        employeePage.clickAddEmployee().then(function() {
            setTimeout(function() {
                var addEmployeeForm = new AddEmployeeForm(driver.getDriver());

                addEmployeeForm.insertUserName(employee.username).then(function() {
                    addEmployeeForm.insertFirstName(employee.firstName).then(function() {
                        addEmployeeForm.insertLastName(employee.lastName).then(function() {
                            addEmployeeForm.clickCreateEmployee().then(function() {
                                employeePage.searchEmployee(employee);
                            });
                        });
                    });
                });
            }, 750);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise

58
推荐指数
2
解决办法
4万
查看次数

标签 统计

javascript ×2

promise ×2

bluebird ×1

es6-promise ×1

node.js ×1

scope ×1