Javascript 如何在node.js中沿.then链传递承诺数据?

Javascript 如何在node.js中沿.then链传递承诺数据?,javascript,node.js,promise,Javascript,Node.js,Promise,我试图通过Promise链传递readFile的数据 它可以读取,但当我将读取的数据传递给writeFile时,它接收到未定义的数据并写入文件: 以下是输出: node promise.js In fileFunction: promiseResolveCallback(): File found! readFromFileCallback: 111111111111111111111111111111111111111111111111111111111111111111111111111

我试图通过Promise链传递readFile的数据

它可以读取,但当我将读取的数据传递给writeFile时,它接收到未定义的数据并写入文件:

以下是输出:

node promise.js 
In fileFunction:
promiseResolveCallback():  File found!
readFromFileCallback: 11111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111


writeToFileCallback: undefined
我的代码:

var objFs   = require( 'fs' )

function promiseResolveCallback( arg )
{
    console.log("promiseResolveCallback(): ", arg)
}

function promiseRejectionCallback( arg )
{
    
    console.log("promiseRejectionCallback(): ", arg)
    throw -999;
}

function writeToFileCallback( argPromise )
{
    objFs.writeFile( 'new.js',
                     argPromise.data, 
                     ( argError ) => 
                     { 
                        if( argError ) 
                            throw argError 
                        else 
                            console.log( "writeToFileCallback: Written in new.js!" ) 
                     } 
                   )
}

function readFromFileCallback()
{
    return new Promise( (resolve, reject ) =>
                        {
                            objFs.readFile( 'new.js', ( argError, argData ) =>
                                                        {
                                                            if( argError )
                                                            {
                                                                reject( argError )
                                                                console.log( "readFromFileCallback: " + argError )
                                                            }
                                                            else
                                                            {
                                                                resolve( "read file \n")
                                                                console.log( "readFromFileCallback: " + argData )
                                                            }
                                                        }
                                          )
                        }
                     )  
}

function fileFunction()
{                        
     console.log("In fileFunction:")
     return new Promise( ( resolve, reject ) =>
                       {
                            objFs.open( 'new.js', 
                                        'r', 
                                        ( argError, argFD ) =>
                                        {
                                            if( argError )
                                            {
                                                reject( new Error("File not found!"), 1000);
                                            }
                                            else
                                            {
                                                resolve("File found!", 1000);
                                            }
                                        }
                                      )
                       }
                     );
} 

var objPromise = fileFunction()
objPromise.then( promiseResolveCallback, promiseRejectionCallback )
       .then( readFromFileCallback )
       .then( writeToFileCallback )

objPromise.catch( ( argError ) =>
                {
                    console.error( argError )
                } 
             )


                   
                    
                  

我对承诺这个话题很陌生。但我认为您需要在readFromFileCallback中使用argData进行解析。

您可以使用默认情况下提供的fs.Promisesfrom 10.0进行读写。 范例

输出

well done
Put your args data here

fs已经有了承诺的APi。请多读,谢谢。使用wait和async已经解决了这个问题。我希望通过使用just Promissions而不使用Wait async来解决这个问题。这很有帮助。其次,我应该使用argPromise而不是argPromise.data。这也有帮助。非常感谢。
well done
Put your args data here