我有一个用例,我应该访问promise结果变量,范围应为全局变量或外部范围

var mobileNumber = database.generateMobileNumber().then(function(number) {
return number;//number should be access outside this function scope
);

最佳答案

您可以在函数返回的promise中声明变量并分配值,然后等待promise被解决。就是这样 -

var mobileNumber = '';
browser.wait(function(){
    return database.generateMobileNumber().then(function(number) {
        mobileNumber = number;
        return !!number;
    );
}).then(function(){
    //mobileNumber should be accessible here
});


注意:因为您不知道诺言何时返回,所以在返回值之前,使用wait()函数应该会有所帮助。同样,如果在某些操作后使用该值,则无需将wait()函数与.then()链接。

希望能帮助到你。

09-13 08:34